[dotenv@17.2.3] injecting env (155) from .env -- tip: 🗂️ backup and recover secrets: https://dotenvx.com/ops
[dotenv@17.2.3] injecting env (0) from .env -- tip: ⚙️  specify custom .env file path with { path: '/custom/path/.env' }
[protected-image] IMAGE_ROOTS = [ 'C:\\Bordales Projects\\giftwrap - Copy\\protected\\images' ]
[protected-image] IMAGE_ROOT = /home/bordales/public_html/v1/protected/images
[protected-image] SKU fallback enabled
[Server] ✅ Real-Time Monitor: Initialized
[protected-image] Cache initialized with 9640 files
[Schema] PRICE_HAS_COST_MARKUP = true
✅ Database synced – tables are ready
[Server] Running on port 3000 in development mode
[Server] Health check: http://localhost:3000/healthz
[Server] Ready check: http://localhost:3000/readyz
[Server] ✅ WhatsApp Service: Loaded
[Server] ✅ AI Assistant: Loaded
[Server] ✅ Gate System: Loaded
Running periodic AI performance monitoring...
{"t":"2026-03-03T11:35:00.881Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:35:00.942Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.0737,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:35:00.943Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:35:00.983Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.4935,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:35:00.984Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /contact Original URL: /api/contact
[GATE DEBUG] Session ID: M5HqbBfeEpk4XQIQPxYnpP_5A3vM7MEU
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:35:03.491Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:35:03.505Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.4314,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:35:03.507Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:35:03.553Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.2302,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:35:03.555Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /newsletter/subscribe Original URL: /api/newsletter/subscribe
[GATE DEBUG] Session ID: LO5mm3HlsvwXGmOo7SC7-3Er0VmN15J-
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:35:05.348Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:35:05.399Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.5526,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:35:05.401Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:35:05.432Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4382,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:35:05.434Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /quote Original URL: /api/quote
[GATE DEBUG] Session ID: xoQ2uLcZ3nBAZegDTXpyBlC2YN_JBHmK
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:35:06.983Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:35:07.006Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.9095,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:35:07.008Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:35:07.021Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.8889,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:35:07.022Z","event":"tenancy.ok","rid":null,"ms":39,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /cart/notify Original URL: /api/cart/notify
[GATE DEBUG] Session ID: HviIyuY0Splsf8DfUHEXlJoUUH0IpZ2g
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:35:08.098Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:35:08.124Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.2668,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:35:08.126Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:35:08.149Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.2776,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:35:08.151Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /catalog-request Original URL: /api/catalog-request
[GATE DEBUG] Session ID: 4GrO7rSIsNHXxoYRf0sLRROzifkbOFz8
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:35:09.254Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:35:09.312Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.7367,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:35:09.313Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:35:09.347Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4241,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:35:09.349Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /contact/delivery Original URL: /api/contact/delivery
[GATE DEBUG] Session ID: ycVvV7c9u-VDmR3IYjh46m1Pw7TaYJWI
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:35:10.113Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:35:10.164Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.8884,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:35:10.165Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:35:10.217Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.5617,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:35:10.218Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /email/branding-request Original URL: /api/email/branding-request
[GATE DEBUG] Session ID: GfX07mE4mK9YIaQmOqhAZ9oyDfHD_PgH
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:35:11.011Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:35:11.030Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.6537,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:35:11.031Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:35:11.065Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8193,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:35:11.066Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /email/price-guarantee Original URL: /api/email/price-guarantee
[GATE DEBUG] Session ID: cEmCQlufblqVc-OKanXpDGL3WfZMAP9e
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:35:11.737Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:35:11.788Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.7784,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:35:11.790Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:35:11.836Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.8517,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:35:11.838Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /email/test Original URL: /api/email/test
[GATE DEBUG] Session ID: B67RD8yp4D-0Bod9uTsNvU31szzxLy8x
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:39:39.863Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:39:39.946Z","event":"tenants.lookup.exact.ok","rid":null,"ms":73.1353,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:39:39.949Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:39:39.983Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5036,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:39:39.985Z","event":"tenancy.ok","rid":null,"ms":122,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /contact Original URL: /api/contact
[GATE DEBUG] Session ID: ViChJKlSmFoVSQ8wdyUrHu0xeJ9sb66Q
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:39:41.128Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:39:41.150Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.2381,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:39:41.151Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:39:41.182Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.2842,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:39:41.184Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /newsletter/subscribe Original URL: /api/newsletter/subscribe
[GATE DEBUG] Session ID: PZGlLmwhu0ghlGUaMD1DvJI25hCTP7P9
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:39:42.388Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:39:42.430Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8235,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:39:42.431Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:39:42.469Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3053,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:39:42.470Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /quote Original URL: /api/quote
[GATE DEBUG] Session ID: xtQHPs28lH_Bu62uUxi098tW_ZDRxws1
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:39:43.912Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:39:43.947Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.8129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:39:43.948Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:39:43.992Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.3881,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:39:43.993Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /cart/notify Original URL: /api/cart/notify
[GATE DEBUG] Session ID: mhYtwIWEh6bQzTzXq6S5QPc5Y1MSH2e5
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:39:45.106Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:39:45.147Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.87,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:39:45.149Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:39:45.188Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.2272,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:39:45.189Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /catalog-request Original URL: /api/catalog-request
[GATE DEBUG] Session ID: BVvto1gKHOW907I3RVdSbQf-Yuug0Xa8
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:39:46.005Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:39:46.047Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7122,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:39:46.049Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:39:46.069Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.7419,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:39:46.070Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /contact/delivery Original URL: /api/contact/delivery
[GATE DEBUG] Session ID: vUNTDUrZoSG8gx60888aKsFbiqKgnFUI
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:39:46.835Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:39:46.874Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.8014,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:39:46.874Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:39:46.905Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.5991,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:39:46.906Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /email/branding-request Original URL: /api/email/branding-request
[GATE DEBUG] Session ID: sir9D2K7q7277Fcnz2h-8J1rxZfs9eCp
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:39:47.596Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:39:47.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.0537,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:39:47.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:39:47.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.4717,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:39:47.687Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /email/price-guarantee Original URL: /api/email/price-guarantee
[GATE DEBUG] Session ID: 3ixpAMvW1Ok-o6J4B8LTIA9FiuJnVKI5
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T11:39:48.477Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T11:39:48.505Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.347,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T11:39:48.507Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T11:39:48.544Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.7835,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T11:39:48.546Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /email/test Original URL: /api/email/test
[GATE DEBUG] Session ID: d7M6xWSk627Bv7cl1575LPiTSqr0vqzy
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
Running periodic AI performance monitoring...
{"t":"2026-03-03T16:25:00.411Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
Running periodic AI performance monitoring...
{"t":"2026-03-03T16:25:00.681Z","event":"tenants.lookup.exact.ok","rid":null,"ms":266.4817,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:00.711Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:01.145Z","event":"tenants.lookup.default.ok","rid":null,"ms":413.7291,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:01.161Z","event":"tenancy.ok","rid":null,"ms":763,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [ROOT] Handler reached for host: localhost:3000
[DEBUG] [SPA] buildSpa called for path: /
[SPA] Building for path: /
[DEBUG] [SEO] applyThemeAndSeo called for path: /
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /
[DEBUG] [SEO] fetchSeoMeta done: meta=true, links=4
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T16:25:03.528Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:03.548Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:03.568Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:03.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:03.658Z","event":"tenants.lookup.exact.ok","rid":null,"ms":92.0889,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:03.668Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:03.691Z","event":"tenants.lookup.exact.ok","rid":null,"ms":145.5558,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:03.705Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:03.732Z","event":"tenants.lookup.exact.ok","rid":null,"ms":137.4879,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:03.745Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:03.752Z","event":"tenants.lookup.exact.ok","rid":null,"ms":145.6846,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:03.771Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:03.776Z","event":"tenants.lookup.default.ok","rid":null,"ms":104.2175,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:03.780Z","event":"tenancy.ok","rid":null,"ms":232,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:03.822Z","event":"tenants.lookup.default.ok","rid":null,"ms":107.9859,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:03.832Z","event":"tenancy.ok","rid":null,"ms":304,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:04.042Z","event":"tenants.lookup.default.ok","rid":null,"ms":292.1202,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:04.059Z","event":"tenancy.ok","rid":null,"ms":491,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:04.090Z","event":"tenants.lookup.default.ok","rid":null,"ms":315.7225,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:04.123Z","event":"tenancy.ok","rid":null,"ms":532,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:05.080Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:05.143Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.5091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:05.145Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:05.205Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.9934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:05.208Z","event":"tenancy.ok","rid":null,"ms":128,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SPA] buildSpa called for path: /branding/theme
[SPA] Building for path: /branding/theme
[DEBUG] [SEO] applyThemeAndSeo called for path: /branding/theme
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /branding/theme
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T16:25:05.646Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:05.653Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:05.663Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:05.666Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:05.689Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.4673,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:05.691Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:05.694Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.7656,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:05.696Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:05.698Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:05.700Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.9996,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:05.702Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:05.704Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1262,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:05.705Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:05.710Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.4426,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:05.712Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:05.714Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.2394,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:05.715Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:05.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.4258,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:05.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:05.733Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.0422,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:05.735Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:05.738Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.2385,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:05.740Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:05.771Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.4207,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:05.776Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:05.800Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:05.824Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:05.849Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:05.869Z","event":"tenants.lookup.exact.ok","rid":null,"ms":65.3619,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:05.871Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:05.899Z","event":"tenants.lookup.exact.ok","rid":null,"ms":72.7486,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:05.901Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:05.904Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:05.910Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:05.918Z","event":"tenants.lookup.exact.ok","rid":null,"ms":61.0775,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:05.925Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:05.935Z","event":"tenants.lookup.default.ok","rid":null,"ms":62.8202,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:05.939Z","event":"tenancy.ok","rid":null,"ms":139,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:05.942Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.2504,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:05.947Z","event":"tenancy.ok","rid":null,"ms":123,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:05.950Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.7816,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:05.954Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:05.958Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.6863,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:05.963Z","event":"tenancy.ok","rid":null,"ms":114,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:05.966Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.1999,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:05.973Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:06.025Z","event":"tenants.lookup.default.ok","rid":null,"ms":69.746,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:06.029Z","event":"tenancy.ok","rid":null,"ms":125,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:06.036Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.6082,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:06.043Z","event":"tenancy.ok","rid":null,"ms":133,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[TOP-DEBUG] Request: GET /api/v3/collections?limit=8&active_only=true&include_counts=true&nocache=1&_ts=1772555105904
{"t":"2026-03-03T16:25:06.378Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:06.386Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:06.392Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:06.438Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:06.454Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:06.467Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:06.493Z","event":"tenants.lookup.exact.ok","rid":null,"ms":104.1664,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:06.503Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:06.533Z","event":"tenants.lookup.exact.ok","rid":null,"ms":149.0565,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:06.540Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:06.566Z","event":"tenants.lookup.exact.ok","rid":null,"ms":156.2191,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:06.586Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:06.592Z","event":"tenants.lookup.exact.ok","rid":null,"ms":142.8036,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:06.603Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:06.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":165.4804,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:06.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:06.671Z","event":"tenants.lookup.exact.ok","rid":null,"ms":199.0521,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:06.688Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:06.706Z","event":"tenants.lookup.default.ok","rid":null,"ms":174.8854,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:06.723Z","event":"tenancy.ok","rid":null,"ms":337,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:06.838Z","event":"tenants.lookup.default.ok","rid":null,"ms":281.8344,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:06.852Z","event":"tenancy.ok","rid":null,"ms":474,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:06.887Z","event":"tenants.lookup.default.ok","rid":null,"ms":297.5614,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:06.896Z","event":"tenancy.ok","rid":null,"ms":504,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /v3/collections Original URL: /api/v3/collections?limit=8&active_only=true&include_counts=true&nocache=1&_ts=1772555105904
[GATE DEBUG] Session ID: vAaUjNjhOkmyfvsfWXfDJqAXW79w6ZoW
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T16:25:06.940Z","event":"tenants.lookup.default.ok","rid":null,"ms":321.3135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:06.942Z","event":"tenancy.ok","rid":null,"ms":505,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /tenants/resolve Original URL: /api/tenants/resolve?domain=localhost
[GATE DEBUG] Session ID: kGJ8qq8g17KGSd7n_oiCKHHfqSA-36Fb
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[API] {
  id: null,
  status: 304,
  ms: 650,
  method: 'GET',
  path: '/api/tenants/resolve?domain=localhost',
  origin: null,
  host: 'localhost:3000',
  tenantId: 1,
  authenticated: false
}
{"t":"2026-03-03T16:25:07.023Z","event":"tenants.lookup.default.ok","rid":null,"ms":371.4291,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:07.024Z","event":"tenancy.ok","rid":null,"ms":570,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:07.075Z","event":"tenants.lookup.default.ok","rid":null,"ms":376.7626,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:07.090Z","event":"tenancy.ok","rid":null,"ms":623,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[TOP-DEBUG] Request: GET /api/v3/products?limit=8&offset=0&sort=newest&nocache=1&_ts=1772555105904
[V3-DEBUG] Request: GET /api/v3/collections?limit=8&active_only=true&include_counts=true&nocache=1&_ts=1772555105904 -> path inside router: /collections
{"t":"2026-03-03T16:25:07.285Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:07.296Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:07.306Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:07.341Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.8824,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:07.346Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:07.355Z","event":"tenants.lookup.exact.ok","rid":null,"ms":57.2732,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:07.365Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:07.369Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.8163,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:07.372Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:07.489Z","event":"tenants.lookup.default.ok","rid":null,"ms":138.9926,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:07.491Z","event":"tenancy.ok","rid":null,"ms":206,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /v3/products Original URL: /api/v3/products?limit=8&offset=0&sort=newest&nocache=1&_ts=1772555105904
[GATE DEBUG] Session ID: PA6xR-jbU7Ih9ilAxoKQHzJ9p9hBIQ5v
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T16:25:07.531Z","event":"tenants.lookup.default.ok","rid":null,"ms":160.8043,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:07.534Z","event":"tenancy.ok","rid":null,"ms":238,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:07.567Z","event":"tenants.lookup.default.ok","rid":null,"ms":193.472,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:07.571Z","event":"tenancy.ok","rid":null,"ms":264,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[V3-DEBUG] Request: GET /api/v3/products?limit=8&offset=0&sort=newest&nocache=1&_ts=1772555105904 -> path inside router: /products
[V2-DEBUG] /categories for tenant: 1, parent_id: undefined
[DEBUG] [SPA] buildSpa called for path: /categories
[SPA] Building for path: /categories
[DEBUG] [SEO] applyThemeAndSeo called for path: /categories
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /categories
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T16:25:25.106Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:25.167Z","event":"tenants.lookup.exact.ok","rid":null,"ms":58.8698,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:25.168Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:25.195Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.6575,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:25.196Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SPA] buildSpa called for path: /catalog-browser
[SPA] Building for path: /catalog-browser
[DEBUG] [SEO] applyThemeAndSeo called for path: /catalog-browser
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /catalog-browser
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T16:25:25.429Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:25.438Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:25.440Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:25.453Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:25.455Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.4279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:25.456Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:25.462Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.202,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:25.463Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:25.465Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.8794,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:25.466Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:25.467Z","event":"tenants.lookup.exact.ok","rid":null,"ms":13.0638,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:25.468Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:25.497Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.7915,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:25.498Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:25.504Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.746,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:25.507Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:25.512Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.3433,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:25.515Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:25.520Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.9372,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:25.522Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:25.639Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:25.673Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.2769,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:25.674Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:25.695Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.0442,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:25.696Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SPA] buildSpa called for path: /branding/theme
[SPA] Building for path: /branding/theme
[DEBUG] [SEO] applyThemeAndSeo called for path: /branding/theme
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /branding/theme
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T16:25:25.998Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:26.003Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:26.025Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:26.035Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.8003,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:26.036Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:26.038Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.6192,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:26.039Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:26.040Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:26.049Z","event":"tenants.lookup.default.ok","rid":null,"ms":11.9639,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:26.051Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:26.053Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7603,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:26.054Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:26.056Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.1789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:26.057Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:26.083Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.4647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:26.087Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:26.090Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.8885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:26.093Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:26.135Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.3333,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:26.138Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:26.140Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:26.148Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:26.159Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:26.167Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:26.174Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.0357,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:26.177Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:26.180Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:26.184Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:26.187Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.107,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:26.188Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:26.195Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.1409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:26.198Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:26.202Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.0818,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:26.206Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:26.219Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:26.224Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.5701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:26.229Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:26.235Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.3781,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:26.236Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:26.239Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.6663,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:26.240Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:26.269Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.4196,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:26.271Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:26.297Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.9353,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:26.298Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:25:26.318Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:26.321Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:25:26.352Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.709,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:26.353Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:26.355Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.3181,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:25:26.356Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:25:26.370Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.9456,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:26.371Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SPA] buildSpa called for path: /categories
[SPA] Building for path: /categories
[DEBUG] [SEO] applyThemeAndSeo called for path: /categories
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
{"t":"2026-03-03T16:25:26.392Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6308,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:25:26.393Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /categories
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
[V2-DEBUG] /categories for tenant: 1, parent_id: undefined
Running periodic AI performance monitoring...
{"t":"2026-03-03T16:30:58.240Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:30:58.248Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:30:58.291Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.3279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:30:58.292Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:30:58.294Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.6609,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:30:58.296Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:30:58.315Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.2097,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:30:58.316Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:30:58.320Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.3706,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:30:58.322Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:30:58.517Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:30:58.520Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:30:58.530Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:30:58.564Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.5438,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:30:58.565Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:30:58.568Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.6932,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:30:58.569Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:30:58.571Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.5272,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:30:58.572Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:30:58.600Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.989,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:30:58.602Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /store/categories Original URL: /api/store/categories?format=hierarchical&include=children,product_count&limit=500
[GATE DEBUG] Session ID: u27FfreQ7eBCVZcu9eyrZ4SLgfO8XCGr
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T16:30:58.613Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.192,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:30:58.615Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /store/products Original URL: /api/store/products?limit=10&sort=popular
[GATE DEBUG] Session ID: ThguW-NcepgrJBBErNZ4x7ds-2BiKchZ
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T16:30:58.625Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.1866,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:30:58.627Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /store/categories/promotional-items Original URL: /api/store/categories/promotional-items?include=parent%2Cchildren%2Cproducts%2Cbreadcrumb&product_limit=12&product_offset=0&product_sort=name_asc&price_max=10000&product_price_max=10000
[GATE DEBUG] Session ID: uCNvuZqTTpJrzC4ksKg8RwDwxJx4zECu
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[API] {
  id: null,
  status: 304,
  ms: 192,
  method: 'GET',
  path: '/api/store/products?limit=10&sort=popular',
  origin: null,
  host: 'localhost:3000',
  tenantId: 1,
  authenticated: false
}
[API] {
  id: null,
  status: 304,
  ms: 1912,
  method: 'GET',
  path: '/api/store/categories?format=hierarchical&include=children,product_count&limit=500',
  origin: null,
  host: 'localhost:3000',
  tenantId: 1,
  authenticated: false
}
[API] {
  id: null,
  status: 304,
  ms: 2679,
  method: 'GET',
  path: '/api/store/categories/promotional-items?include=parent%2Cchildren%2Cproducts%2Cbreadcrumb&product_limit=12&product_offset=0&product_sort=name_asc&price_max=10000&product_price_max=10000',
  origin: null,
  host: 'localhost:3000',
  tenantId: 1,
  authenticated: false
}
{"t":"2026-03-03T16:31:04.429Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:04.431Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:04.467Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.7684,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:04.468Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:04.470Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.428,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:04.472Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:04.494Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.6642,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:04.495Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:31:04.502Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:04.504Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:31:04.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:04.712Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:04.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.2367,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:04.722Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:04.740Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8219,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:04.742Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:04.747Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:04.752Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0473,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:04.757Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /store/categories Original URL: /api/store/categories?format=hierarchical&include=children,product_count&limit=500
[GATE DEBUG] Session ID: hltqR-4tNVO0ooCC8yMfROG324-4xu1P
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[API] {
  id: null,
  status: 304,
  ms: 375,
  method: 'GET',
  path: '/api/store/categories?format=hierarchical&include=children,product_count&limit=500',
  origin: null,
  host: 'localhost:3000',
  tenantId: 1,
  authenticated: false
}
{"t":"2026-03-03T16:31:05.067Z","event":"tenants.lookup.exact.ok","rid":null,"ms":317.5804,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:05.069Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:05.072Z","event":"tenants.lookup.default.ok","rid":null,"ms":328.3248,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:05.074Z","event":"tenancy.ok","rid":null,"ms":362,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /store/products Original URL: /api/store/products?limit=10&sort=popular
[GATE DEBUG] Session ID: 5g7NJ3kFnRtUhFCOqAfuABuermhKUfRS
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T16:31:05.101Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.7828,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:05.105Z","event":"tenancy.ok","rid":null,"ms":358,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /store/categories/corporate-gifts Original URL: /api/store/categories/corporate-gifts?include=parent%2Cchildren%2Cproducts%2Cbreadcrumb&product_limit=12&product_offset=0&product_sort=name_asc&price_max=10000&product_price_max=10000
[GATE DEBUG] Session ID: E-qk_35PRiiSNMCzKw87hyRdu8qQjqAQ
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[API] {
  id: null,
  status: 304,
  ms: 413,
  method: 'GET',
  path: '/api/store/products?limit=10&sort=popular',
  origin: null,
  host: 'localhost:3000',
  tenantId: 1,
  authenticated: false
}
[API] {
  id: null,
  status: 304,
  ms: 765,
  method: 'GET',
  path: '/api/store/categories/corporate-gifts?include=parent%2Cchildren%2Cproducts%2Cbreadcrumb&product_limit=12&product_offset=0&product_sort=name_asc&price_max=10000&product_price_max=10000',
  origin: null,
  host: 'localhost:3000',
  tenantId: 1,
  authenticated: false
}
{"t":"2026-03-03T16:31:06.852Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:06.854Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:06.856Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:06.880Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9788,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:06.882Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:06.885Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3824,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:06.887Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:06.890Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1787,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:06.900Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:06.922Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.1516,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:06.924Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /store/categories Original URL: /api/store/categories?format=hierarchical&include=children,product_count&limit=500
[GATE DEBUG] Session ID: Fjwagv4gNc6TvBbhJ6kxwnSCs0FZjj5O
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[API] {
  id: null,
  status: 304,
  ms: 548,
  method: 'GET',
  path: '/api/store/categories?format=hierarchical&include=children,product_count&limit=500',
  origin: null,
  host: 'localhost:3000',
  tenantId: 1,
  authenticated: false
}
{"t":"2026-03-03T16:31:07.322Z","event":"tenants.lookup.default.ok","rid":null,"ms":438.8632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:07.323Z","event":"tenancy.ok","rid":null,"ms":469,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /store/products Original URL: /api/store/products?limit=10&sort=popular
[GATE DEBUG] Session ID: GsTSln4aJTdKt1wHjtjdz6qf3ZdnAdad
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T16:31:07.331Z","event":"tenants.lookup.default.ok","rid":null,"ms":430.4343,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:07.333Z","event":"tenancy.ok","rid":null,"ms":477,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /store/categories/promotional-items Original URL: /api/store/categories/promotional-items?include=parent%2Cchildren%2Cproducts%2Cbreadcrumb&product_limit=12&product_offset=0&product_sort=name_asc&price_max=10000&product_price_max=10000
[GATE DEBUG] Session ID: X6RlK3_arFCAJM7eJDG0LaOplsBNz2Sg
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[API] {
  id: null,
  status: 304,
  ms: 575,
  method: 'GET',
  path: '/api/store/products?limit=10&sort=popular',
  origin: null,
  host: 'localhost:3000',
  tenantId: 1,
  authenticated: false
}
[API] {
  id: null,
  status: 304,
  ms: 1004,
  method: 'GET',
  path: '/api/store/categories/promotional-items?include=parent%2Cchildren%2Cproducts%2Cbreadcrumb&product_limit=12&product_offset=0&product_sort=name_asc&price_max=10000&product_price_max=10000',
  origin: null,
  host: 'localhost:3000',
  tenantId: 1,
  authenticated: false
}
{"t":"2026-03-03T16:31:08.337Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:08.340Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:08.345Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:08.383Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1518,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:08.385Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:08.388Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.8588,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:08.390Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:08.393Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.2343,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:08.394Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:08.417Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.7501,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:08.419Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:31:08.428Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.3878,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:08.430Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:31:08.432Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.1716,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:08.434Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:31:08.597Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:08.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.5902,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:08.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:08.657Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.0605,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:08.662Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /branding/theme Original URL: /api/branding/theme
[GATE DEBUG] Session ID: lGftVxzYlEFUQ7k_fFhO-TKrfKV5zzle
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[Branding] GET /theme called for host: localhost:3000
[Branding] Processing theme for tenant 1 (Giftwrap Trading (Pty) Ltd)
[Branding] Fetching reCAPTCHA config for tenant 1
[Branding] Using reCAPTCHA keys from database
[Branding] reCAPTCHA config: {
  hasSiteKey: true,
  hasSecret: true,
  source: 'database',
  enabled: true,
  isTestKey: false
}
why ufike late?? 6LdWOkUsAAAAAGmpRzggKFYxM18PQ3RVzzqA99ck
[Branding] GET /theme response prepared {
  tenant: 'Giftwrap Trading (Pty) Ltd',
  hasRecaptchaKey: true,
  recaptchaSource: 'database',
  themeVarsCount: 16
}
{"t":"2026-03-03T16:31:08.948Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:08.975Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.8464,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:08.977Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:09.026Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.2632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:09.029Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /pages/branding Original URL: /api/pages/branding
[GATE DEBUG] Session ID: F2ElOYsctDHMyDj2bkbnHlWLuEK43jgz
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T16:31:12.653Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:12.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:12.795Z","event":"tenants.lookup.exact.ok","rid":null,"ms":139.9817,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:12.796Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:12.799Z","event":"tenants.lookup.exact.ok","rid":null,"ms":113.3543,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:12.800Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:12.834Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.0696,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:12.835Z","event":"tenancy.ok","rid":null,"ms":182,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:31:12.839Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.7516,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:12.840Z","event":"tenancy.ok","rid":null,"ms":156,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:31:13.145Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:13.181Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.7274,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:13.184Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:13.311Z","event":"tenants.lookup.default.ok","rid":null,"ms":126.2467,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:13.313Z","event":"tenancy.ok","rid":null,"ms":168,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /store/categories Original URL: /api/store/categories?format=hierarchical&include=children,product_count&limit=500
[GATE DEBUG] Session ID: SjcK7BjKjMoFVtC5mM5dVQg_d-8MSEd8
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[API] {
  id: null,
  status: 304,
  ms: 475,
  method: 'GET',
  path: '/api/store/categories?format=hierarchical&include=children,product_count&limit=500',
  origin: null,
  host: 'localhost:3000',
  tenantId: 1,
  authenticated: false
}
{"t":"2026-03-03T16:31:19.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.0344,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:19.653Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:19.672Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:19.688Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5518,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:19.690Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:31:19.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.3396,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:19.750Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.1368,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:19.752Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:31:19.773Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:19.804Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5628,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:19.806Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:19.832Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:19.840Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:19.841Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:31:19.863Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1843,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:19.865Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:19.897Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1336,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:19.899Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:31:19.910Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:19.950Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.4344,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:19.954Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:19.995Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.0913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:19.996Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:31:20.164Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:20.204Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:20.211Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.7896,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:20.213Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:20.234Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4974,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:20.235Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:20.238Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.3758,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:20.241Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:31:20.276Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.0755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:20.277Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:31:20.294Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:20.332Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:20.336Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.9821,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:20.338Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:20.374Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4049,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:20.375Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:31:20.387Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.8796,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:20.390Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:20.425Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0558,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:20.426Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:31:21.412Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:21.454Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.2704,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:21.455Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:21.488Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.6621,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:21.490Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:31:32.514Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:32.525Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:32.539Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.4523,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:32.540Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:32.546Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.7804,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:32.548Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:32.579Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.7273,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:32.580Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:31:32.582Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.1485,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:32.584Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:31:33.266Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:33.338Z","event":"tenants.lookup.exact.ok","rid":null,"ms":61.8584,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:33.343Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:33.383Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0069,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:33.386Z","event":"tenancy.ok","rid":null,"ms":120,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /pages/about Original URL: /api/pages/about
[GATE DEBUG] Session ID: zPSxF0UQx6uRGTYkVtQ5b366dcZCydaG
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T16:31:52.169Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:52.254Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:52.286Z","event":"tenants.lookup.exact.ok","rid":null,"ms":103.3675,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:52.318Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:52.338Z","event":"tenants.lookup.exact.ok","rid":null,"ms":72.0913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:52.350Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:52.390Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.6864,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:52.433Z","event":"tenancy.ok","rid":null,"ms":264,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:31:52.471Z","event":"tenants.lookup.default.ok","rid":null,"ms":97.5643,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:52.493Z","event":"tenancy.ok","rid":null,"ms":230,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:31:52.949Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:52.953Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:52.982Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:31:52.991Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.7503,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:52.995Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:52.998Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.8113,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:53.002Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:53.018Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.6332,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:31:53.020Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:31:53.043Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.0373,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:53.045Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /blog/articles Original URL: /api/blog/articles?include=category,author&status=published
[GATE DEBUG] Session ID: SQGCiGwjTo4cUj8BqFiDca8oDyTCsy51
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T16:31:53.069Z","event":"tenants.lookup.default.ok","rid":null,"ms":72.0675,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:53.071Z","event":"tenancy.ok","rid":null,"ms":122,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /pages/blog Original URL: /api/pages/blog
[GATE DEBUG] Session ID: CrSN9bSZ8ri9i826ALsjLqbsX_-0B8Qv
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T16:31:53.086Z","event":"tenants.lookup.default.ok","rid":null,"ms":64.2925,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:31:53.088Z","event":"tenancy.ok","rid":null,"ms":106,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /branding/theme Original URL: /api/branding/theme
[GATE DEBUG] Session ID: Md6FYERRyW9Zp3Gxul1B0RuRVGMGv7qZ
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[Branding] GET /theme called for host: localhost:3000
[Branding] Processing theme for tenant 1 (Giftwrap Trading (Pty) Ltd)
[Branding] Fetching reCAPTCHA config for tenant 1
[Branding] Using reCAPTCHA keys from database
[Branding] reCAPTCHA config: {
  hasSiteKey: true,
  hasSecret: true,
  source: 'database',
  enabled: true,
  isTestKey: false
}
why ufike late?? 6LdWOkUsAAAAAGmpRzggKFYxM18PQ3RVzzqA99ck
[Branding] GET /theme response prepared {
  tenant: 'Giftwrap Trading (Pty) Ltd',
  hasRecaptchaKey: true,
  recaptchaSource: 'database',
  themeVarsCount: 16
}
{"t":"2026-03-03T16:32:04.340Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:04.345Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:04.368Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7478,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:04.370Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:04.371Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.1739,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:04.372Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:04.399Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.9553,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:04.401Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:04.402Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7224,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:04.403Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:04.559Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:04.617Z","event":"tenants.lookup.exact.ok","rid":null,"ms":57.5426,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:04.618Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:04.671Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.4548,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:04.673Z","event":"tenancy.ok","rid":null,"ms":114,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /branding/theme Original URL: /api/branding/theme
[GATE DEBUG] Session ID: YVjNwOJshsAXFmzuVsoBYcfKTiLwnAPZ
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[Branding] GET /theme called for host: localhost:3000
[Branding] Processing theme for tenant 1 (Giftwrap Trading (Pty) Ltd)
[Branding] Fetching reCAPTCHA config for tenant 1
[Branding] Using reCAPTCHA keys from database
[Branding] reCAPTCHA config: {
  hasSiteKey: true,
  hasSecret: true,
  source: 'database',
  enabled: true,
  isTestKey: false
}
why ufike late?? 6LdWOkUsAAAAAGmpRzggKFYxM18PQ3RVzzqA99ck
[Branding] GET /theme response prepared {
  tenant: 'Giftwrap Trading (Pty) Ltd',
  hasRecaptchaKey: true,
  recaptchaSource: 'database',
  themeVarsCount: 16
}
{"t":"2026-03-03T16:32:04.791Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:04.822Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.3422,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:04.823Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:04.862Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.8876,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:04.863Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /pages/contact Original URL: /api/pages/contact
[GATE DEBUG] Session ID: -rZZvMCzTEBx_oFQPw4fKHFSOKbPH6TS
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T16:32:07.237Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:07.259Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:07.261Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.3144,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:07.263Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:07.279Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.2764,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:07.280Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:07.283Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.6287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:07.284Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:07.304Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0617,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:07.305Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[TOP-DEBUG] Request: GET /api/v3/regions
{"t":"2026-03-03T16:32:07.862Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:07.904Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.6617,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:07.905Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:07.940Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.418,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:07.941Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /v3/regions Original URL: /api/v3/regions
[GATE DEBUG] Session ID: NJi_1dpDAHQ1Xm8uiu8nfu5XX0_hBRJj
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[V3-DEBUG] Request: GET /api/v3/regions -> path inside router: /regions
[TOP-DEBUG] Request: GET /api/v3/geoip
{"t":"2026-03-03T16:32:08.010Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:08.039Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.8284,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:08.040Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:08.083Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.7581,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:08.085Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /v3/geoip Original URL: /api/v3/geoip
[GATE DEBUG] Session ID: JYOQsMYHoWTuZQ0vczYlGu1-dHHb4gUI
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[V3-DEBUG] Request: GET /api/v3/geoip -> path inside router: /geoip
[TOP-DEBUG] Request: GET /api/v3/branding-methods?include_counts=true&nocache=1&_ts=1772555528120
{"t":"2026-03-03T16:32:08.136Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:08.154Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.475,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:08.155Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:08.174Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.3527,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:08.175Z","event":"tenancy.ok","rid":null,"ms":39,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /v3/branding-methods Original URL: /api/v3/branding-methods?include_counts=true&nocache=1&_ts=1772555528120
[GATE DEBUG] Session ID: pKWUTZwMZI-tmr29dD8BEZ-RNmNsthlP
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[V3-DEBUG] Request: GET /api/v3/branding-methods?include_counts=true&nocache=1&_ts=1772555528120 -> path inside router: /branding-methods
[TOP-DEBUG] Request: GET /api/v3/categories?format=flat&limit=500&include_products=false&nocache=1&_ts=1772555528245
{"t":"2026-03-03T16:32:08.259Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:08.283Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.4501,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:08.284Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:08.314Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.1595,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:08.315Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /v3/categories Original URL: /api/v3/categories?format=flat&limit=500&include_products=false&nocache=1&_ts=1772555528245
[GATE DEBUG] Session ID: cd2AVr2JH9xPZQEcA7tHmUj36RobyjdB
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[V3-DEBUG] Request: GET /api/v3/categories?format=flat&limit=500&include_products=false&nocache=1&_ts=1772555528245 -> path inside router: /categories
[TOP-DEBUG] Request: GET /api/v3/collections?page=1&limit=100&include_counts=true&active_only=true&featured=false&nocache=1&_ts=1772555528975
{"t":"2026-03-03T16:32:08.984Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:09.016Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.8679,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:09.017Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:09.054Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1851,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:09.056Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /v3/collections Original URL: /api/v3/collections?page=1&limit=100&include_counts=true&active_only=true&featured=false&nocache=1&_ts=1772555528975
[GATE DEBUG] Session ID: -E3RIJChYyeR1LmaDTIeQQlpe3kYkKSR
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[V3-DEBUG] Request: GET /api/v3/collections?page=1&limit=100&include_counts=true&active_only=true&featured=false&nocache=1&_ts=1772555528975 -> path inside router: /collections
[TOP-DEBUG] Request: GET /api/v3/products?page=1&limit=48&sort=newest&region=ZA&nocache=1&_ts=1772555529388
{"t":"2026-03-03T16:32:09.396Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:09.414Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.7098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:09.415Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:09.439Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.9171,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:09.441Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /v3/products Original URL: /api/v3/products?page=1&limit=48&sort=newest&region=ZA&nocache=1&_ts=1772555529388
[GATE DEBUG] Session ID: yqpIUcopXTW7hqlTAd5K7tP4YCK4c5-n
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[V3-DEBUG] Request: GET /api/v3/products?page=1&limit=48&sort=newest&region=ZA&nocache=1&_ts=1772555529388 -> path inside router: /products
{"t":"2026-03-03T16:32:14.448Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:14.466Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:14.495Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.2461,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:14.496Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:14.498Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5745,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:14.499Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:14.535Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.6699,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:14.536Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:14.539Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.6091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:14.540Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[TOP-DEBUG] Request: GET /api/v3/products?limit=8&offset=0&sort=newest&nocache=1&_ts=1772555534617
[TOP-DEBUG] Request: GET /api/v3/collections?limit=8&active_only=true&include_counts=true&nocache=1&_ts=1772555534618
{"t":"2026-03-03T16:32:14.667Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:14.669Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:14.733Z","event":"tenants.lookup.exact.ok","rid":null,"ms":65.2729,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:14.735Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:14.746Z","event":"tenants.lookup.exact.ok","rid":null,"ms":73.9589,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:14.750Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:14.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:14.810Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:14.830Z","event":"tenants.lookup.default.ok","rid":null,"ms":88.1841,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:14.836Z","event":"tenancy.ok","rid":null,"ms":169,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /v3/products Original URL: /api/v3/products?limit=8&offset=0&sort=newest&nocache=1&_ts=1772555534617
[GATE DEBUG] Session ID: sQpG6-koEIfFIqdb-a6ejlwkyMUkK8vR
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T16:32:14.884Z","event":"tenants.lookup.default.ok","rid":null,"ms":130.8189,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:14.889Z","event":"tenancy.ok","rid":null,"ms":220,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /v3/collections Original URL: /api/v3/collections?limit=8&active_only=true&include_counts=true&nocache=1&_ts=1772555534618
[GATE DEBUG] Session ID: RFuxakci6_yVB4tICWFM7tqPrB9gYjsr
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T16:32:14.915Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:14.958Z","event":"tenants.lookup.exact.ok","rid":null,"ms":143.254,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:14.963Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:14.978Z","event":"tenants.lookup.exact.ok","rid":null,"ms":177.2091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:14.984Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
[V3-DEBUG] Request: GET /api/v3/products?limit=8&offset=0&sort=newest&nocache=1&_ts=1772555534617 -> path inside router: /products
[V3-DEBUG] Request: GET /api/v3/collections?limit=8&active_only=true&include_counts=true&nocache=1&_ts=1772555534618 -> path inside router: /collections
{"t":"2026-03-03T16:32:15.031Z","event":"tenants.lookup.exact.ok","rid":null,"ms":111.843,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:15.042Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:15.059Z","event":"tenants.lookup.default.ok","rid":null,"ms":90.2108,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:15.065Z","event":"tenancy.ok","rid":null,"ms":254,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:15.083Z","event":"tenants.lookup.default.ok","rid":null,"ms":95.8185,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:15.098Z","event":"tenancy.ok","rid":null,"ms":313,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:15.185Z","event":"tenants.lookup.default.ok","rid":null,"ms":140.4064,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:15.199Z","event":"tenancy.ok","rid":null,"ms":284,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:15.356Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:15.503Z","event":"tenants.lookup.exact.ok","rid":null,"ms":135.5944,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:15.511Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:15.555Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.3227,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:15.567Z","event":"tenancy.ok","rid":null,"ms":212,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:16.666Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:16.741Z","event":"tenants.lookup.exact.ok","rid":null,"ms":68.5003,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:16.745Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:16.821Z","event":"tenants.lookup.default.ok","rid":null,"ms":72.3804,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:16.835Z","event":"tenancy.ok","rid":null,"ms":168,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:17.205Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:17.255Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.7804,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:17.278Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:17.386Z","event":"tenants.lookup.default.ok","rid":null,"ms":72.4977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:17.399Z","event":"tenancy.ok","rid":null,"ms":194,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:17.495Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:17.559Z","event":"tenants.lookup.exact.ok","rid":null,"ms":58.3268,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:17.563Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:17.620Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.8174,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:17.624Z","event":"tenancy.ok","rid":null,"ms":129,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:17.698Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:17.766Z","event":"tenants.lookup.exact.ok","rid":null,"ms":65.5114,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:17.771Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:17.854Z","event":"tenants.lookup.default.ok","rid":null,"ms":70.3122,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:17.863Z","event":"tenancy.ok","rid":null,"ms":165,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:17.977Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:18.039Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.6106,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:18.043Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:18.099Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.0661,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:18.106Z","event":"tenancy.ok","rid":null,"ms":129,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:18.481Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:18.535Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.6451,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:18.538Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:18.591Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.7804,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:18.596Z","event":"tenancy.ok","rid":null,"ms":115,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:18.699Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:18.745Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.8346,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:18.748Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:18.819Z","event":"tenants.lookup.default.ok","rid":null,"ms":62.9374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:18.823Z","event":"tenancy.ok","rid":null,"ms":124,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:18.941Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:18.999Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.7051,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:19.007Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:19.060Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.6937,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:19.064Z","event":"tenancy.ok","rid":null,"ms":123,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:19.198Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:19.266Z","event":"tenants.lookup.exact.ok","rid":null,"ms":57.9305,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:19.277Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:19.352Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.873,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:19.357Z","event":"tenancy.ok","rid":null,"ms":159,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:19.537Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:19.612Z","event":"tenants.lookup.exact.ok","rid":null,"ms":63.8451,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:19.616Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:19.679Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.5646,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:19.683Z","event":"tenancy.ok","rid":null,"ms":147,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:19.805Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:19.868Z","event":"tenants.lookup.exact.ok","rid":null,"ms":59.8177,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:19.872Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:19.923Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:19.932Z","event":"tenancy.ok","rid":null,"ms":126,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:20.041Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:20.117Z","event":"tenants.lookup.exact.ok","rid":null,"ms":68.2612,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:20.122Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:20.165Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.5879,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:20.174Z","event":"tenancy.ok","rid":null,"ms":133,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:20.286Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:20.381Z","event":"tenants.lookup.exact.ok","rid":null,"ms":88.7318,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:20.398Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:20.456Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.0172,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:20.470Z","event":"tenancy.ok","rid":null,"ms":184,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:20.558Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:20.621Z","event":"tenants.lookup.exact.ok","rid":null,"ms":59.3557,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:20.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:20.685Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.2237,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:20.693Z","event":"tenancy.ok","rid":null,"ms":135,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:32:21.459Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:21.467Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:21.481Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.5504,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:21.483Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:21.494Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.7549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:21.496Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:21.515Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.2963,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:21.516Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:32:21.527Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7189,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:21.530Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:32:21.544Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:21.560Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.1988,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:21.561Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:21.599Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.7205,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:21.601Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:32:21.614Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:21.646Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.2946,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:21.647Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:21.664Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:21.679Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4597,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:21.681Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:32:21.692Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.051,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:21.693Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:21.699Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:21.705Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:21.709Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:21.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":13.979,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:21.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:21.724Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0037,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:21.725Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:32:21.736Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.139,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:21.737Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:21.740Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1138,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:21.742Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:21.747Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:21.750Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.9233,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:21.751Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:32:21.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:32:21.774Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.6796,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:21.776Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:32:21.787Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.364,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:21.788Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:32:21.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.1495,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:21.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:21.805Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.2929,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:32:21.806Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:32:21.815Z","event":"tenants.lookup.default.ok","rid":null,"ms":11.1164,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:21.816Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:32:21.835Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.3033,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:32:21.836Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:33:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:33:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:33:19.679Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:33:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:33:19.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:33:19.898Z","event":"tenants.lookup.exact.ok","rid":null,"ms":290.0758,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:33:19.900Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:33:19.903Z","event":"tenants.lookup.exact.ok","rid":null,"ms":284.7574,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:33:19.905Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:33:19.907Z","event":"tenants.lookup.exact.ok","rid":null,"ms":225.2954,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:33:19.908Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:33:19.910Z","event":"tenants.lookup.exact.ok","rid":null,"ms":183.5288,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:33:19.911Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:33:19.913Z","event":"tenants.lookup.exact.ok","rid":null,"ms":125.2348,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:33:19.914Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:33:19.926Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.4118,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:33:19.927Z","event":"tenancy.ok","rid":null,"ms":336,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:33:19.939Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5627,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:33:19.942Z","event":"tenancy.ok","rid":null,"ms":325,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:33:19.953Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.5925,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:33:19.957Z","event":"tenancy.ok","rid":null,"ms":278,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:33:19.967Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.9826,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:33:19.975Z","event":"tenancy.ok","rid":null,"ms":254,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:33:19.987Z","event":"tenants.lookup.default.ok","rid":null,"ms":71.2653,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:33:19.990Z","event":"tenancy.ok","rid":null,"ms":205,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:33:20.010Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:33:20.033Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:33:20.041Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.4663,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:33:20.042Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:33:20.051Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:33:20.068Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:33:20.074Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.2589,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:33:20.076Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:33:20.079Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1159,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:33:20.081Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:33:20.101Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.5657,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:33:20.102Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:33:20.109Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:33:20.112Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.3004,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:33:20.116Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:33:20.119Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.8812,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:33:20.121Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:33:20.383Z","event":"tenants.lookup.exact.ok","rid":null,"ms":272.874,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:33:20.399Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:33:20.405Z","event":"tenants.lookup.default.ok","rid":null,"ms":288.0978,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:33:20.407Z","event":"tenancy.ok","rid":null,"ms":339,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:33:20.416Z","event":"tenants.lookup.default.ok","rid":null,"ms":311.3898,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:33:20.418Z","event":"tenancy.ok","rid":null,"ms":367,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:33:20.433Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0434,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:33:20.435Z","event":"tenancy.ok","rid":null,"ms":326,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:34:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:34:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:34:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.0197,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:34:19.642Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:34:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.4922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:34:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:34:19.672Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:34:19.680Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.9166,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:34:19.681Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:34:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.3095,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:34:19.688Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:34:19.700Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.6501,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:34:19.702Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:34:19.705Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:34:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:34:19.719Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:34:19.723Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.5263,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:34:19.724Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:34:19.727Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.9067,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:34:19.728Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:34:19.743Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.3844,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:34:19.744Z","event":"tenancy.ok","rid":null,"ms":39,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:34:19.750Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.5703,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:34:19.753Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:34:19.756Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.0659,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:34:19.757Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:34:19.767Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:34:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:34:19.793Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.565,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:34:19.795Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:34:19.804Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.4335,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:34:19.806Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:34:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.8316,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:34:19.815Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:34:19.816Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.6375,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:34:19.818Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:34:19.826Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:34:19.835Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.5499,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:34:19.836Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:34:19.842Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.0431,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:34:19.842Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:34:19.850Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.9008,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:34:19.852Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:34:19.863Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:34:19.880Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.8322,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:34:19.882Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:34:19.893Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.8667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:34:19.895Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:34:19.918Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.5699,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:34:19.919Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T16:35:19.576Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:35:19.606Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:35:19.625Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.6724,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:35:19.627Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:35:19.630Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.0272,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:35:19.632Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:35:19.648Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.9367,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:35:19.649Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:35:19.657Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.512,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:35:19.659Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:35:19.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:35:19.697Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:35:19.704Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:35:19.716Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:35:19.722Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.4158,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:35:19.723Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:35:19.725Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.8904,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:35:19.727Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:35:19.729Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.592,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:35:19.731Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:35:19.736Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.2034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:35:19.738Z","event":"tenancy.ok","rid":null,"ms":34,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:35:19.746Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4576,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:35:19.748Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:35:19.756Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.6622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:35:19.757Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:35:19.764Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.506,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:35:19.765Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:35:19.773Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.2279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:35:19.774Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:35:19.819Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:35:19.824Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:35:19.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.8732,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:35:19.837Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:35:19.842Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:35:19.856Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.8648,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:35:19.858Z","event":"tenancy.ok","rid":null,"ms":39,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:35:19.867Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.7088,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:35:19.869Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:35:19.871Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.1967,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:35:19.872Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:35:19.897Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.1968,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:35:19.899Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:35:19.907Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.7722,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:35:19.908Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:35:19.923Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:35:19.941Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.4987,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:35:19.942Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:35:19.981Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.839,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:35:19.983Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:36:19.575Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:36:19.600Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:36:19.654Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.4576,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:36:19.656Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:36:19.658Z","event":"tenants.lookup.exact.ok","rid":null,"ms":68.2352,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:36:19.659Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:36:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:36:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:36:19.775Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:36:19.975Z","event":"tenants.lookup.default.ok","rid":null,"ms":314.8173,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:36:19.978Z","event":"tenancy.ok","rid":null,"ms":403,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:36:19.988Z","event":"tenants.lookup.exact.ok","rid":null,"ms":272.8913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:36:19.990Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:36:19.993Z","event":"tenants.lookup.default.ok","rid":null,"ms":336.8887,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:36:19.996Z","event":"tenancy.ok","rid":null,"ms":396,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:36:20.013Z","event":"tenants.lookup.exact.ok","rid":null,"ms":327.3218,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:36:20.015Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:36:20.018Z","event":"tenants.lookup.exact.ok","rid":null,"ms":240.7028,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:36:20.020Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:36:20.023Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.8093,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:36:20.025Z","event":"tenancy.ok","rid":null,"ms":311,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:36:20.055Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:36:20.061Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.8378,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:36:20.062Z","event":"tenancy.ok","rid":null,"ms":378,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:36:20.069Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.9291,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:36:20.070Z","event":"tenancy.ok","rid":null,"ms":295,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:36:20.081Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:36:20.085Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.5838,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:36:20.087Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:36:20.095Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:36:20.108Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:36:20.117Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:36:20.143Z","event":"tenants.lookup.exact.ok","rid":null,"ms":60.0175,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:36:20.145Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:36:20.210Z","event":"tenants.lookup.default.ok","rid":null,"ms":121.7946,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:36:20.212Z","event":"tenancy.ok","rid":null,"ms":157,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:36:20.386Z","event":"tenants.lookup.exact.ok","rid":null,"ms":277.0985,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:36:20.388Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:36:20.389Z","event":"tenants.lookup.exact.ok","rid":null,"ms":293.6248,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:36:20.391Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:36:20.393Z","event":"tenants.lookup.exact.ok","rid":null,"ms":274.4885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:36:20.394Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:36:20.396Z","event":"tenants.lookup.default.ok","rid":null,"ms":250.3339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:36:20.397Z","event":"tenancy.ok","rid":null,"ms":316,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:36:20.433Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.7776,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:36:20.435Z","event":"tenancy.ok","rid":null,"ms":327,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:36:20.447Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.6238,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:36:20.449Z","event":"tenancy.ok","rid":null,"ms":332,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:36:20.459Z","event":"tenants.lookup.default.ok","rid":null,"ms":66.1643,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:36:20.462Z","event":"tenancy.ok","rid":null,"ms":367,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:37:19.585Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:37:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:37:19.633Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1352,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:37:19.634Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:37:19.637Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.6282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:37:19.639Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:37:19.662Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0102,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:37:19.664Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:37:19.671Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0113,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:37:19.673Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:37:19.738Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:37:19.751Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:37:19.779Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.4198,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:37:19.780Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:37:19.786Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.1937,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:37:19.788Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:37:19.829Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.1157,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:37:19.831Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:37:19.839Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.3429,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:37:19.841Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:37:19.884Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:37:19.900Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:37:19.906Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:37:19.919Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.8163,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:37:19.920Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:37:19.923Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.7924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:37:19.928Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:37:19.941Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.587,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:37:19.942Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:37:19.945Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.2344,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:37:19.947Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:37:19.964Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.8406,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:37:19.965Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:37:19.976Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.9632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:37:19.977Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:37:20.031Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:37:20.061Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.1523,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:37:20.063Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:37:20.079Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.19,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:37:20.080Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:37:20.123Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:37:20.133Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:37:20.159Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.7408,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:37:20.160Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:37:20.163Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.5742,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:37:20.165Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:37:20.200Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.1897,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:37:20.201Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:37:20.213Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.0269,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:37:20.215Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:38:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:38:19.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:38:19.650Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.6712,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:38:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:38:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.9881,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:38:19.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:38:19.680Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:38:19.690Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.7633,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:38:19.690Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:38:19.697Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.9863,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:38:19.698Z","event":"tenancy.ok","rid":null,"ms":111,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:38:19.711Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.1877,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:38:19.713Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:38:19.732Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:38:19.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:38:19.743Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7006,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:38:19.744Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:38:19.763Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:38:19.766Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.5312,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:38:19.769Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:38:19.773Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.1318,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:38:19.775Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:38:19.782Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.5888,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:38:19.784Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:38:19.805Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7863,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:38:19.806Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:38:19.816Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.6164,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:38:19.817Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:38:19.828Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:38:19.831Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.1545,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:38:19.832Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:38:19.845Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:38:19.847Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.3691,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:38:19.849Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:38:19.863Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.5206,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:38:19.864Z","event":"tenancy.ok","rid":null,"ms":36,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:38:19.872Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.5153,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:38:19.873Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:38:19.889Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:38:19.898Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.8818,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:38:19.899Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:38:19.926Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:38:19.927Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:38:19.946Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:38:19.957Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4326,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:38:19.958Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:38:19.977Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:38:19.980Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:38:19.998Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.3231,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:38:19.999Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:39:19.585Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:39:19.603Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.8118,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:39:19.604Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:39:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:39:19.644Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5956,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:39:19.645Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:39:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.2442,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:39:19.653Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:39:19.685Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:39:19.693Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6009,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:39:19.695Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:39:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:39:19.714Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.9245,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:39:19.715Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:39:19.736Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:39:19.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:39:19.774Z","event":"tenants.lookup.exact.ok","rid":null,"ms":64.1297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:39:19.776Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:39:19.793Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:39:19.908Z","event":"tenants.lookup.default.ok","rid":null,"ms":130.8913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:39:19.910Z","event":"tenancy.ok","rid":null,"ms":202,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:39:19.920Z","event":"tenants.lookup.exact.ok","rid":null,"ms":181.483,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:39:19.922Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:39:19.925Z","event":"tenants.lookup.default.ok","rid":null,"ms":207.9485,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:39:19.927Z","event":"tenancy.ok","rid":null,"ms":242,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:39:19.942Z","event":"tenants.lookup.exact.ok","rid":null,"ms":147.2461,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:39:19.944Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:39:19.946Z","event":"tenants.lookup.exact.ok","rid":null,"ms":176.8828,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:39:19.947Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:39:19.952Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0325,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:39:19.954Z","event":"tenancy.ok","rid":null,"ms":218,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:39:19.963Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.6045,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:39:19.965Z","event":"tenancy.ok","rid":null,"ms":172,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:39:19.985Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.6364,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:39:19.986Z","event":"tenancy.ok","rid":null,"ms":220,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:39:20.087Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:39:20.117Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:39:20.123Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:39:20.259Z","event":"tenants.lookup.exact.ok","rid":null,"ms":169.7771,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:39:20.261Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:39:20.264Z","event":"tenants.lookup.exact.ok","rid":null,"ms":145.3269,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:39:20.265Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:39:20.268Z","event":"tenants.lookup.exact.ok","rid":null,"ms":143.0737,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:39:20.269Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:39:20.289Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.8511,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:39:20.291Z","event":"tenancy.ok","rid":null,"ms":174,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:39:20.300Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.9656,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:39:20.302Z","event":"tenancy.ok","rid":null,"ms":215,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:39:20.321Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.1174,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:39:20.322Z","event":"tenancy.ok","rid":null,"ms":199,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T16:40:19.583Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:40:19.599Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:40:19.604Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.6922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:40:19.605Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:40:19.624Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9527,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:40:19.625Z","event":"tenancy.ok","rid":null,"ms":42,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:40:19.630Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:40:19.631Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:40:19.660Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:40:19.663Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.8362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:40:19.665Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:40:19.688Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:40:19.691Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.8947,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:40:19.693Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:40:19.712Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:40:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.712,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:40:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:40:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:40:19.727Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.3976,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:40:19.728Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:40:19.744Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.5417,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:40:19.746Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:40:19.756Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0265,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:40:19.757Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:40:19.759Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.0346,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:40:19.761Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:40:19.789Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.8781,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:40:19.791Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:40:19.798Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.9423,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:40:19.799Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:40:19.828Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:40:19.859Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.8183,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:40:19.861Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:40:19.879Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.7071,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:40:19.880Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:40:19.894Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:40:19.924Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.8956,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:40:19.925Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:40:19.929Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:40:19.959Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.702,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:40:19.960Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:40:19.967Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.0244,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:40:19.968Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:40:19.982Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:40:20.004Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.485,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:40:20.005Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:40:20.014Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9305,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:40:20.016Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:40:20.044Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.3607,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:40:20.046Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:41:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:41:19.608Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:41:19.619Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.39,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:41:19.621Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:41:19.658Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.3463,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:41:19.659Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:41:19.661Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3143,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:41:19.662Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:41:19.677Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:41:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.1986,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:41:19.688Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:41:19.698Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.0066,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:41:19.700Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:41:19.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:41:19.731Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:41:19.736Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.6353,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:41:19.738Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:41:19.741Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.4185,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:41:19.742Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:41:19.758Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:41:19.767Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1096,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:41:19.769Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:41:19.772Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7338,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:41:19.774Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:41:19.787Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2696,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:41:19.789Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:41:19.809Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.8838,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:41:19.811Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:41:19.827Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4942,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:41:19.829Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:41:19.851Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:41:19.860Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:41:19.871Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:41:19.877Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.7857,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:41:19.879Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:41:19.881Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.9703,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:41:19.883Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:41:19.904Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0513,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:41:19.906Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:41:19.908Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.9326,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:41:19.910Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:41:19.921Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0463,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:41:19.923Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:41:19.940Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.4311,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:41:19.943Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:41:19.999Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:41:20.019Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.5166,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:41:20.021Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:41:20.040Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.2312,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:41:20.042Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:42:05.030Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:05.069Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.1293,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:05.071Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:05.105Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7873,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:05.106Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SPA] buildSpa called for path: /catalog-browser
[SPA] Building for path: /catalog-browser
[DEBUG] [SEO] applyThemeAndSeo called for path: /catalog-browser
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /catalog-browser
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T16:42:05.337Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:05.348Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:05.352Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:05.368Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:05.378Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.9961,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:05.379Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:05.381Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.0193,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:05.381Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:05.382Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.791,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:05.383Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:05.384Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.5385,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:05.385Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:05.410Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.2332,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:05.411Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:05.414Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7502,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:05.415Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:05.416Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.842,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:05.417Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:05.419Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0449,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:05.420Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:05.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:05.606Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.931,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:05.607Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:05.649Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.0525,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:05.650Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SPA] buildSpa called for path: /branding/theme
[SPA] Building for path: /branding/theme
[DEBUG] [SEO] applyThemeAndSeo called for path: /branding/theme
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /branding/theme
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T16:42:06.791Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:06.800Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:06.812Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:06.815Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:06.828Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.8936,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:06.829Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:06.830Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.6091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:06.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:06.833Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.6829,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:06.833Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:06.847Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7686,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:06.848Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:06.849Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.9293,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:06.850Z","event":"tenancy.ok","rid":null,"ms":38,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:06.852Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.4595,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:06.853Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:06.856Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.4308,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:06.857Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:06.889Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.1853,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:06.890Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:06.937Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:06.965Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.3721,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:06.966Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:06.974Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:07.000Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:07.002Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:07.009Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.733,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:07.010Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:07.013Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.8137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:07.014Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:07.017Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:07.027Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.7966,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:07.029Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:07.031Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.2883,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:07.032Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:07.036Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.2887,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:07.038Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:07.043Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:07.048Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3183,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:07.049Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:07.074Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.4596,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:07.077Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:07.079Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.9521,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:07.081Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:07.083Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.1951,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:07.085Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:07.101Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.75,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:07.103Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:07.119Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9684,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:07.120Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:07.130Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:07.154Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.8557,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:07.155Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:07.186Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.9541,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:07.188Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[V2-DEBUG] /categories for tenant: 1, parent_id: undefined
[DEBUG] [SPA] buildSpa called for path: /categories
[SPA] Building for path: /categories
[DEBUG] [SEO] applyThemeAndSeo called for path: /categories
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /categories
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T16:42:19.650Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:19.670Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.9389,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:19.671Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:19.681Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:19.707Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.2596,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:19.709Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:42:19.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.5725,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:19.725Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:19.748Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.559,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:19.749Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:42:19.759Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.9777,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:19.761Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:19.768Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:19.785Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.9573,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:19.787Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:42:19.800Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.8813,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:19.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:19.826Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.8693,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:19.828Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:42:19.888Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:19.920Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:19.924Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.0919,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:19.926Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:19.946Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.0975,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:19.947Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:42:19.958Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.0495,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:19.960Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:19.971Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:19.986Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.8189,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:19.988Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:42:19.997Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9121,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:19.999Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:20.007Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:20.016Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:20.031Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.8049,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:20.032Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:20.034Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9199,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:20.036Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:42:20.050Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.4177,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:20.053Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:20.066Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4743,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:20.068Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:42:20.088Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.1755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:20.090Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:42:20.203Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:20.215Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:20.225Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.743,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:20.227Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:20.249Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:20.251Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:20.254Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.3515,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:20.255Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:42:20.290Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:20.292Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SPA] buildSpa called for path: /catalog-browser
[SPA] Building for path: /catalog-browser
[DEBUG] [SEO] applyThemeAndSeo called for path: /catalog-browser
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /catalog-browser
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T16:42:20.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:20.732Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:20.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:20.748Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.3615,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:20.749Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:20.751Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:20.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.303,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:20.756Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:20.767Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.8092,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:20.768Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:20.769Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.8031,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:20.770Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:20.772Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.7979,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:20.772Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:20.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.5891,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:20.786Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:20.791Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.5536,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:20.791Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:20.793Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.2921,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:20.795Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:21.143Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:21.170Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.4546,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:21.171Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:21.205Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3793,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:21.206Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SPA] buildSpa called for path: /branding/theme
[SPA] Building for path: /branding/theme
[DEBUG] [SEO] applyThemeAndSeo called for path: /branding/theme
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /branding/theme
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T16:42:21.534Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:21.554Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.5353,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:21.555Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:21.569Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:21.571Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:21.585Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.714,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:21.586Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:21.587Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.5427,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:21.588Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:21.595Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.3642,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:21.597Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:21.608Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.4904,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:21.610Z","event":"tenancy.ok","rid":null,"ms":41,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:21.614Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.3403,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:21.615Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:21.629Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:21.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.6191,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:21.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:21.685Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.554,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:21.686Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:21.811Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:21.817Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:21.846Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:21.850Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.3103,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:21.851Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:21.853Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.4135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:21.853Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:21.855Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:21.869Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:21.885Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.6712,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:21.886Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:21.888Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.3934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:21.889Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:21.890Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.2587,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:21.892Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:21.894Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2319,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:21.895Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:21.896Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.144,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:21.897Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SPA] buildSpa called for path: /categories
[SPA] Building for path: /categories
[DEBUG] [SEO] applyThemeAndSeo called for path: /categories
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
{"t":"2026-03-03T16:42:21.917Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:21.929Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7095,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:21.931Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:21.933Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.6382,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:21.934Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:21.935Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.7693,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:21.936Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /categories
{"t":"2026-03-03T16:42:21.947Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2904,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:21.948Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:21.968Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.1335,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:21.968Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:21.983Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:21.986Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:42:22.005Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.9179,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:22.006Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:42:22.007Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.9069,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:42:22.009Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T16:42:22.195Z","event":"tenants.lookup.default.ok","rid":null,"ms":188.6334,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:22.197Z","event":"tenancy.ok","rid":null,"ms":211,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T16:42:22.200Z","event":"tenants.lookup.default.ok","rid":null,"ms":189.4978,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:42:22.201Z","event":"tenancy.ok","rid":null,"ms":218,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[protected-image] serving: C:\Bordales Projects\giftwrap - Copy\protected\images\logo.png
[V2-DEBUG] /categories for tenant: 1, parent_id: undefined
{"t":"2026-03-03T16:43:19.582Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:43:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:43:19.642Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.8487,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:43:19.643Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:43:19.645Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.2025,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:43:19.646Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:43:19.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.4971,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:43:19.675Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:43:19.683Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.8943,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:43:19.684Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:43:19.696Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:43:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:43:19.717Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:43:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:43:19.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.9659,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:43:19.727Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:43:19.729Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7148,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:43:19.730Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:43:19.746Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.3238,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:43:19.747Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:43:19.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9764,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:43:19.750Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:43:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.4839,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:43:19.758Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:43:19.765Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.3178,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:43:19.766Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:43:19.776Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:43:19.781Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:43:19.786Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.4887,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:43:19.788Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:43:19.797Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.6932,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:43:19.798Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:43:19.809Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.338,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:43:19.811Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:43:19.814Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.0514,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:43:19.815Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:43:19.846Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2253,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:43:19.847Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:43:19.862Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.8887,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:43:19.864Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:43:19.911Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:43:19.916Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:43:19.930Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.8045,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:43:19.931Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:43:19.934Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.9253,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:43:19.936Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:43:19.968Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4707,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:43:19.970Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:43:19.978Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.8865,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:43:19.979Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:44:42.429Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:44:42.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":219.6487,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:44:42.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:44:42.740Z","event":"tenants.lookup.default.ok","rid":null,"ms":86.6985,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:44:42.743Z","event":"tenancy.ok","rid":null,"ms":314,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:44:42.941Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:44:42.964Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:44:42.979Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.9806,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:44:42.980Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:44:42.986Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.1715,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:44:42.988Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:44:43.007Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.0406,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:44:43.010Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:44:43.024Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3064,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:44:43.026Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:44:43.377Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:44:43.407Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4399,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:44:43.409Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:44:43.430Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.8976,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:44:43.432Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:44:43.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:44:43.792Z","event":"tenants.lookup.exact.ok","rid":null,"ms":195.5052,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:44:43.794Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:44:43.829Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2742,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:44:43.831Z","event":"tenancy.ok","rid":null,"ms":239,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:44:44.153Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:44:44.190Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.3889,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:44:44.192Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:44:44.228Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:44:44.229Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:44:44.381Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:44:44.435Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:44:44.442Z","event":"tenants.lookup.exact.ok","rid":null,"ms":60.0841,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:44:44.444Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:44:44.470Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:44:44.472Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:44:44.475Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6093,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:44:44.476Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:44:44.503Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:44:44.510Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0218,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:44:44.513Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:44:44.553Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.5438,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:44:44.554Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:44:44.595Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:44:44.598Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.0882,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:44:44.602Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:44:44.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":222.1741,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:44:44.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:44:44.854Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.3294,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:44:44.856Z","event":"tenancy.ok","rid":null,"ms":261,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T16:45:20.034Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:45:20.069Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:45:20.079Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.0034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:45:20.083Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:45:20.111Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.6306,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:45:20.114Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:45:20.129Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3713,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:45:20.135Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:45:20.217Z","event":"tenants.lookup.default.ok","rid":null,"ms":98.7819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:45:20.221Z","event":"tenancy.ok","rid":null,"ms":153,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:45:20.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:45:20.756Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:45:20.775Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.076,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:45:20.782Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:45:20.813Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.3476,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:45:20.819Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:45:20.844Z","event":"tenants.lookup.exact.ok","rid":null,"ms":83.9333,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:45:20.846Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:45:20.898Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.6129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:45:20.902Z","event":"tenancy.ok","rid":null,"ms":145,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:45:21.241Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:45:21.311Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.7006,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:45:21.314Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:45:21.354Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.1142,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:45:21.360Z","event":"tenancy.ok","rid":null,"ms":119,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:45:21.915Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:45:21.939Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:45:21.959Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.7531,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:45:21.969Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:45:21.994Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.8242,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:45:21.998Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:45:22.023Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.1294,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:45:22.028Z","event":"tenancy.ok","rid":null,"ms":113,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:45:22.082Z","event":"tenants.lookup.default.ok","rid":null,"ms":82.2454,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:45:22.096Z","event":"tenancy.ok","rid":null,"ms":157,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:45:22.421Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:45:22.437Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:45:22.457Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1624,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:45:22.459Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:45:22.461Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.9188,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:45:22.462Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:45:22.481Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.2977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:45:22.482Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:45:22.491Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.1984,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:45:22.492Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:45:22.713Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:45:22.748Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.3065,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:45:22.749Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:45:22.770Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.7645,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:45:22.774Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:46:19.583Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:46:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:46:19.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.1317,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:46:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:46:19.629Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:46:19.629Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:46:19.672Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:46:19.675Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.5549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:46:19.677Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:46:19.683Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.3011,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:46:19.686Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:46:19.708Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.4949,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:46:19.710Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:46:19.742Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:46:19.746Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:46:19.750Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.1482,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:46:19.751Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:46:19.763Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:46:19.773Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7762,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:46:19.774Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:46:19.776Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.3117,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:46:19.777Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:46:19.781Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:46:19.789Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:46:19.790Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:46:19.793Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:46:19.795Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.5433,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:46:19.796Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:46:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.5898,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:46:19.805Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:46:19.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2853,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:46:19.812Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:46:19.839Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.3239,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:46:19.840Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:46:19.842Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4215,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:46:19.843Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:46:19.848Z","event":"tenants.lookup.default.ok","rid":null,"ms":57.7426,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:46:19.849Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:46:19.868Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.9329,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:46:19.869Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:46:19.890Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:46:19.895Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:46:19.907Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.099,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:46:19.908Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:46:19.911Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.4711,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:46:19.912Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:46:19.947Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4166,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:46:19.948Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:46:19.951Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.7663,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:46:19.952Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:47:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:47:19.605Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:47:19.629Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:47:19.630Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:47:19.631Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.5869,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:47:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:47:19.663Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4983,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:47:19.665Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:47:19.673Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.8465,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:47:19.675Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:47:19.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:47:19.708Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.5262,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:47:19.710Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:47:19.713Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:47:19.719Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:47:19.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:47:19.753Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.6617,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:47:19.753Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:47:19.755Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.0325,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:47:19.755Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:47:19.759Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.0782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:47:19.760Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:47:19.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.2797,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:47:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:47:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:47:19.779Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:47:19.789Z","event":"tenants.lookup.exact.ok","rid":null,"ms":13.8047,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:47:19.790Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:47:19.791Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9574,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:47:19.791Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:47:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2809,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:47:19.795Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:47:19.799Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.112,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:47:19.801Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:47:19.808Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.0686,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:47:19.809Z","event":"tenancy.ok","rid":null,"ms":35,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:47:19.814Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.467,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:47:19.815Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:47:19.819Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:47:19.834Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.3212,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:47:19.835Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:47:19.841Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.8356,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:47:19.842Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:47:19.857Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:47:19.878Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1166,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:47:19.879Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:47:19.882Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.5336,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:47:19.883Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:47:19.907Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.4063,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:47:19.908Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:48:19.585Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:48:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:48:19.645Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.3546,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:48:19.647Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:48:19.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.4374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:48:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:48:19.669Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.4457,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:48:19.669Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:48:19.673Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.3509,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:48:19.674Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:48:19.700Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:48:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:48:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:48:19.728Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.6555,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:48:19.729Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:48:19.733Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:48:19.754Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.6403,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:48:19.755Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:48:19.758Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.0469,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:48:19.759Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:48:19.760Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.6382,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:48:19.760Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:48:19.761Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.5177,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:48:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:48:19.771Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:48:19.810Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:48:19.959Z","event":"tenants.lookup.default.ok","rid":null,"ms":199.2663,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:48:19.961Z","event":"tenancy.ok","rid":null,"ms":228,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:48:19.971Z","event":"tenants.lookup.exact.ok","rid":null,"ms":198.0727,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:48:19.972Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:48:19.975Z","event":"tenants.lookup.exact.ok","rid":null,"ms":163.604,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:48:19.977Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:48:19.980Z","event":"tenants.lookup.default.ok","rid":null,"ms":219.5273,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:48:19.982Z","event":"tenancy.ok","rid":null,"ms":262,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:48:19.994Z","event":"tenants.lookup.default.ok","rid":null,"ms":231.1036,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:48:19.996Z","event":"tenancy.ok","rid":null,"ms":272,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:48:20.007Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.1405,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:48:20.008Z","event":"tenancy.ok","rid":null,"ms":237,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:48:20.017Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.9097,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:48:20.019Z","event":"tenancy.ok","rid":null,"ms":209,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:48:20.042Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:48:20.049Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:48:20.071Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.98,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:48:20.072Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:48:20.073Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.267,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:48:20.074Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:48:20.089Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.17,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:48:20.089Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:48:20.096Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.5424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:48:20.097Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:49:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:49:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:49:19.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.3449,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:49:19.640Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:49:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0678,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:49:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:49:19.670Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.0563,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:49:19.671Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:49:19.676Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.8414,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:49:19.678Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:49:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:49:19.698Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:49:19.704Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:49:19.709Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:49:19.710Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.027,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:49:19.711Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:49:19.730Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.4317,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:49:19.730Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:49:19.731Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.6205,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:49:19.732Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:49:19.732Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.7275,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:49:19.733Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:49:19.733Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.0358,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:49:19.734Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:49:19.750Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:49:19.769Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4413,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:49:19.770Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:49:19.772Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.3377,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:49:19.773Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:49:19.778Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.9382,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:49:19.779Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:49:19.786Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.9977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:49:19.787Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:49:19.790Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:49:19.797Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:49:19.810Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.2859,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:49:19.811Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:49:19.813Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.7739,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:49:19.814Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:49:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.4983,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:49:19.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:49:19.850Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.3086,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:49:19.851Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:49:19.856Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.4879,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:49:19.857Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:49:19.880Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:49:19.909Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.8953,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:49:19.910Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:49:19.930Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.9551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:49:19.932Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:49:31.346Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:49:31.385Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.486,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:49:31.386Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:49:31.411Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.2551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:49:31.412Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[protected-image] serving: C:\Bordales Projects\giftwrap - Copy\protected\images\logo.png
Running periodic AI performance monitoring...
{"t":"2026-03-03T16:50:19.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:50:19.611Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:50:19.683Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:50:19.716Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:50:19.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":152.5958,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:50:19.750Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:50:19.752Z","event":"tenants.lookup.exact.ok","rid":null,"ms":136.8076,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:50:19.753Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:50:19.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":70.0186,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:50:19.756Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:50:19.757Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.0761,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:50:19.757Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:50:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:50:19.789Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7228,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:50:19.790Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:50:19.797Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.5118,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:50:19.798Z","event":"tenancy.ok","rid":null,"ms":188,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:50:19.806Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.1,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:50:19.807Z","event":"tenancy.ok","rid":null,"ms":227,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:50:19.816Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.6636,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:50:19.816Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:50:19.818Z","event":"tenants.lookup.default.ok","rid":null,"ms":59.6262,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:50:19.819Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:50:19.830Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:50:19.835Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:50:19.839Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:50:19.841Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.4559,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:50:19.842Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:50:19.852Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:50:19.874Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.0975,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:50:19.876Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:50:19.882Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:50:19.890Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.7688,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:50:19.893Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:50:19.895Z","event":"tenants.lookup.exact.ok","rid":null,"ms":55.1586,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:50:19.898Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:50:19.900Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.337,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:50:19.901Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:50:20.111Z","event":"tenants.lookup.exact.ok","rid":null,"ms":221.9576,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:50:20.125Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:50:20.128Z","event":"tenants.lookup.default.ok","rid":null,"ms":228.6008,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:50:20.130Z","event":"tenancy.ok","rid":null,"ms":291,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:50:20.137Z","event":"tenants.lookup.default.ok","rid":null,"ms":243.1888,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:50:20.139Z","event":"tenancy.ok","rid":null,"ms":304,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:50:20.148Z","event":"tenants.lookup.default.ok","rid":null,"ms":270.9229,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:50:20.150Z","event":"tenancy.ok","rid":null,"ms":320,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:50:20.162Z","event":"tenants.lookup.default.ok","rid":null,"ms":260.5105,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:50:20.164Z","event":"tenancy.ok","rid":null,"ms":312,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:50:20.172Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.2196,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:50:20.173Z","event":"tenancy.ok","rid":null,"ms":291,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:51:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:51:19.611Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:51:19.630Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.5574,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:51:19.631Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:51:19.647Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.9381,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:51:19.647Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:51:19.666Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:51:19.677Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.9757,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:51:19.678Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:51:19.681Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.1549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:51:19.682Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:51:19.692Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.1268,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:51:19.693Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:51:19.699Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:51:19.707Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:51:19.712Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.3813,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:51:19.713Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:51:19.719Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:51:19.733Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:51:19.735Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8525,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:51:19.736Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:51:19.737Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.1778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:51:19.738Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:51:19.752Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.8933,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:51:19.754Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:51:19.760Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.6442,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:51:19.761Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:51:19.767Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.3251,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:51:19.768Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:51:19.770Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.3265,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:51:19.771Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:51:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:51:19.791Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.8638,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:51:19.792Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:51:19.797Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.0133,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:51:19.798Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:51:19.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.6394,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:51:19.812Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:51:19.815Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:51:19.830Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.7022,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:51:19.831Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:51:19.839Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.4938,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:51:19.840Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:51:19.873Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:51:19.877Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.4293,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:51:19.878Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:51:19.918Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.3201,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:51:19.919Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:51:19.954Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4662,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:51:19.955Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:52:19.594Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:52:19.620Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.8977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:52:19.622Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:52:19.630Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:52:19.650Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.4828,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:52:19.651Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:52:19.658Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5547,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:52:19.659Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:52:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:52:19.696Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1437,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:52:19.698Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:52:19.705Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.7456,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:52:19.707Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:52:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:52:19.718Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:52:19.736Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:52:19.739Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3791,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:52:19.741Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:52:19.748Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.862,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:52:19.749Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:52:19.751Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.1972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:52:19.752Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:52:19.756Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.0807,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:52:19.758Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:52:19.772Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:52:19.781Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.616,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:52:19.783Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:52:19.791Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.5784,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:52:19.793Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:52:19.801Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.2379,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:52:19.803Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:52:19.820Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:52:19.822Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.9207,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:52:19.828Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:52:19.834Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:52:19.851Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:52:19.852Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:52:19.854Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.7697,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:52:19.855Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:52:19.863Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7108,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:52:19.864Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:52:19.891Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.6382,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:52:19.893Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:52:19.900Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.5701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:52:19.901Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:52:19.941Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:52:19.973Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.4744,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:52:19.974Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:52:20.027Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.7677,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:52:20.028Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:53:19.595Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:53:19.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5543,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:53:19.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:53:19.668Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7118,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:53:19.670Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:53:19.929Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:53:19.946Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:53:19.976Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:53:19.978Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.1542,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:53:19.980Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:53:19.981Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.0424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:53:19.983Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:53:19.999Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:53:20.011Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.7357,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:53:20.013Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:53:20.021Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.1485,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:53:20.023Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:53:20.025Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.2125,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:53:20.026Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:53:20.036Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.8365,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:53:20.038Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:53:20.057Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.8504,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:53:20.058Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:53:20.067Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.3699,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:53:20.068Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:53:20.095Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:53:20.134Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.5777,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:53:20.136Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:53:20.166Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.1256,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:53:20.168Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:53:20.322Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:53:20.361Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.7908,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:53:20.362Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:53:20.393Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0736,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:53:20.394Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:53:20.620Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:53:20.662Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:53:20.672Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.5858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:53:20.673Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:53:20.677Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:53:20.687Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.6178,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:53:20.689Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:53:20.694Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.2741,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:53:20.695Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:53:20.704Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.3023,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:53:20.706Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:53:20.727Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.2632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:53:20.728Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:53:20.737Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4529,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:53:20.739Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:54:19.575Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:54:19.600Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:54:19.613Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.619,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:54:19.614Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:54:19.639Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.3886,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:54:19.640Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:54:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.6564,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:54:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:54:19.672Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.2004,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:54:19.674Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:54:19.685Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:54:19.691Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:54:19.699Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:54:19.705Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:54:19.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.3013,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:54:19.714Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:54:19.715Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.125,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:54:19.716Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:54:19.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5423,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:54:19.718Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:54:19.735Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.0742,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:54:19.735Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:54:19.738Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.2865,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:54:19.739Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:54:19.741Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.1049,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:54:19.743Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:54:19.751Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.2328,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:54:19.753Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:54:19.767Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:54:19.777Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.1864,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:54:19.779Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:54:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:54:19.788Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.5831,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:54:19.789Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:54:19.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:54:19.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":11.4036,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:54:19.812Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:54:19.813Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.4452,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:54:19.814Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:54:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.9984,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:54:19.821Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:54:19.852Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.1701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:54:19.852Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:54:19.856Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5784,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:54:19.856Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:54:19.875Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:54:19.892Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.8542,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:54:19.893Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:54:19.932Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5373,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:54:19.933Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T16:55:19.575Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:55:19.601Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:55:19.615Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.4718,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:55:19.616Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:55:19.618Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.224,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:55:19.619Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:55:19.653Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.7816,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:55:19.654Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:55:19.664Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.711,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:55:19.666Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:55:19.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:55:19.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:55:19.693Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:55:19.695Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.3593,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:55:19.695Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:55:19.705Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:55:19.715Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.4544,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:55:19.716Z","event":"tenancy.ok","rid":null,"ms":38,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:55:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.3745,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:55:19.719Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:55:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.4384,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:55:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:55:19.729Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:55:19.733Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2962,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:55:19.734Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:55:19.740Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.4238,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:55:19.740Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:55:19.743Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.9915,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:55:19.744Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:55:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.9247,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:55:19.758Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:55:19.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0294,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:55:19.763Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:55:19.773Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:55:19.775Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:55:19.939Z","event":"tenants.lookup.exact.ok","rid":null,"ms":163.1074,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:55:19.941Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:55:19.942Z","event":"tenants.lookup.default.ok","rid":null,"ms":177.9027,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:55:19.942Z","event":"tenancy.ok","rid":null,"ms":213,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:55:19.946Z","event":"tenants.lookup.exact.ok","rid":null,"ms":172.7978,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:55:19.948Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:55:19.973Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9875,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:55:19.974Z","event":"tenancy.ok","rid":null,"ms":199,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:55:19.978Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.9352,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:55:19.979Z","event":"tenancy.ok","rid":null,"ms":206,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:55:20.009Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:55:20.034Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.9565,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:55:20.035Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:55:20.072Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:55:20.074Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:56:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:56:19.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:56:19.640Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.7114,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:56:19.642Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:56:19.663Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.0488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:56:19.664Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:56:19.673Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3688,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:56:19.675Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:56:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:56:19.698Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:56:19.702Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9905,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:56:19.703Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:56:19.709Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:56:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:56:19.723Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.2141,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:56:19.723Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:56:19.724Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.1865,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:56:19.725Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:56:19.738Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.995,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:56:19.739Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:56:19.739Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.8066,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:56:19.739Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:56:19.761Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.6171,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:56:19.762Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:56:19.766Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.6279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:56:19.766Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:56:19.778Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.0067,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:56:19.779Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:56:19.788Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.4526,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:56:19.790Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:56:19.808Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:56:19.830Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:56:19.841Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:56:19.847Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.4825,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:56:19.848Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:56:19.867Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.2411,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:56:19.868Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:56:19.873Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.1925,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:56:19.873Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:56:19.874Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.1275,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:56:19.875Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:56:19.893Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:56:19.905Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.756,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:56:19.906Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:56:19.908Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.7627,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:56:19.909Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:56:19.946Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.3117,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:56:19.947Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:56:19.969Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.4208,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:56:19.970Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:57:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:57:19.606Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:57:19.621Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0099,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:57:19.622Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:57:19.634Z","event":"tenants.lookup.default.ok","rid":null,"ms":10.9849,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:57:19.635Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:57:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.8374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:57:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:57:19.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:57:19.688Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:57:19.690Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.4884,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:57:19.691Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:57:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:57:19.716Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.9138,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:57:19.717Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:57:19.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.891,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:57:19.719Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:57:19.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:57:19.753Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.2045,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:57:19.754Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:57:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6151,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:57:19.758Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:57:19.763Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.122,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:57:19.764Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:57:19.765Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.1564,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:57:19.766Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:57:19.772Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:57:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:57:19.794Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.2392,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:57:19.795Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:57:19.796Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.7333,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:57:19.796Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:57:19.798Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:57:19.799Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:57:19.802Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:57:19.803Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:57:19.813Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:57:19.815Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.5498,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:57:19.815Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:57:19.833Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.904,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:57:19.834Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:57:19.839Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.5932,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:57:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:57:19.848Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:57:19.873Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.432,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:57:19.873Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:57:19.874Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.0051,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:57:19.874Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:57:19.893Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.3246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:57:19.894Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:58:19.581Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:58:19.615Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:58:19.620Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.7257,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:58:19.621Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:58:19.656Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.6332,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:58:19.657Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:58:19.661Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.9144,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:58:19.662Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:58:19.695Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.7502,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:58:19.696Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:58:19.704Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:58:19.730Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:58:19.734Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:58:19.736Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.056,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:58:19.737Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:58:19.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:58:19.754Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.244,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:58:19.755Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:58:19.756Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.8748,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:58:19.756Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:58:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.3539,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:58:19.758Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:58:19.761Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.9205,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:58:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:58:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:58:19.778Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:58:19.795Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.4693,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:58:19.796Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:58:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:58:19.800Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:58:19.804Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.7782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:58:19.805Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:58:19.810Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.2173,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:58:19.811Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:58:19.812Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.217,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:58:19.813Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:58:19.835Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.6447,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:58:19.836Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:58:19.841Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.7216,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:58:19.843Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:58:19.849Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:58:19.866Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:58:19.876Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.3481,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:58:19.877Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:58:19.894Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4854,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:58:19.895Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:58:19.897Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.857,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:58:19.898Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:58:19.914Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.1592,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:58:19.916Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:59:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:59:19.615Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:59:19.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.9873,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:59:19.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:59:19.640Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.2218,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:59:19.641Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:59:19.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:59:19.676Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:59:19.685Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.4358,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:59:19.687Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:59:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:59:19.736Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.8674,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:59:19.737Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:59:19.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:59:19.775Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.1865,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:59:19.776Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:59:19.784Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:59:19.788Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:59:19.791Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:59:19.805Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:59:19.827Z","event":"tenants.lookup.exact.ok","rid":null,"ms":60.305,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:59:19.827Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:59:19.994Z","event":"tenants.lookup.exact.ok","rid":null,"ms":209.3714,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:59:19.997Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:59:19.999Z","event":"tenants.lookup.exact.ok","rid":null,"ms":210.3695,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:59:20.001Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:59:20.003Z","event":"tenants.lookup.exact.ok","rid":null,"ms":210.4422,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:59:20.004Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:59:20.007Z","event":"tenants.lookup.exact.ok","rid":null,"ms":200.2292,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:59:20.009Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:59:20.012Z","event":"tenants.lookup.default.ok","rid":null,"ms":183.6075,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:59:20.014Z","event":"tenancy.ok","rid":null,"ms":248,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:59:20.036Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.2845,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:59:20.038Z","event":"tenancy.ok","rid":null,"ms":254,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:59:20.047Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.5426,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:59:20.049Z","event":"tenancy.ok","rid":null,"ms":244,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:59:20.059Z","event":"tenants.lookup.default.ok","rid":null,"ms":57.0854,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:59:20.062Z","event":"tenancy.ok","rid":null,"ms":274,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:59:20.072Z","event":"tenants.lookup.default.ok","rid":null,"ms":66.2622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:59:20.074Z","event":"tenancy.ok","rid":null,"ms":283,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:59:20.116Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:59:20.123Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T16:59:20.135Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.803,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:59:20.136Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:59:20.141Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T16:59:20.142Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T16:59:20.181Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.1913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:59:20.181Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T16:59:20.188Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.6132,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T16:59:20.189Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T17:00:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:00:19.611Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:00:19.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.2011,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:00:19.637Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:00:19.640Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8619,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:00:19.641Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:00:19.675Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.3654,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:00:19.677Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:00:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.2045,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:00:19.691Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:00:19.710Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:00:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.6419,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:00:19.735Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:00:19.743Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:00:19.763Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:00:19.770Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:00:19.779Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.8137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:00:19.780Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:00:19.787Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:00:19.789Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.937,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:00:19.790Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:00:19.791Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7334,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:00:19.792Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:00:19.796Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.8461,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:00:19.797Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:00:19.805Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:00:19.815Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5616,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:00:19.816Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:00:19.817Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.3703,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:00:19.818Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:00:19.822Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0857,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:00:19.823Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:00:19.828Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.6847,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:00:19.830Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:00:19.839Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.7636,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:00:19.840Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:00:19.845Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.0778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:00:19.846Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:00:19.870Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.9488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:00:19.871Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:00:19.878Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:00:19.891Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:00:19.915Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1539,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:00:19.916Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:00:19.917Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.8336,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:00:19.918Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:00:19.930Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.7426,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:00:19.930Z","event":"tenancy.ok","rid":null,"ms":39,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:00:19.933Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.1485,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:00:19.933Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:01:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:01:19.607Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:01:19.623Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.7277,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:01:19.624Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:01:19.630Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.7229,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:01:19.632Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:01:19.663Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:01:19.664Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:01:19.673Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.7074,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:01:19.675Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:01:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:01:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:01:19.748Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:01:19.751Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:01:19.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.0685,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:01:19.756Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:01:19.758Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4752,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:01:19.759Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:01:19.775Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:01:19.914Z","event":"tenants.lookup.exact.ok","rid":null,"ms":165.043,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:01:19.917Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:01:19.919Z","event":"tenants.lookup.exact.ok","rid":null,"ms":166.6681,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:01:19.920Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:01:19.922Z","event":"tenants.lookup.default.ok","rid":null,"ms":165.299,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:01:19.924Z","event":"tenancy.ok","rid":null,"ms":203,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:01:19.934Z","event":"tenants.lookup.exact.ok","rid":null,"ms":157.7168,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:01:19.936Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:01:19.938Z","event":"tenants.lookup.default.ok","rid":null,"ms":178.7579,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:01:19.940Z","event":"tenancy.ok","rid":null,"ms":216,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:01:19.956Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.3833,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:01:19.958Z","event":"tenancy.ok","rid":null,"ms":210,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:01:19.971Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.9846,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:01:19.973Z","event":"tenancy.ok","rid":null,"ms":222,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:01:19.988Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.8577,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:01:19.991Z","event":"tenancy.ok","rid":null,"ms":216,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:01:20.057Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:01:20.061Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:01:20.078Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:01:20.253Z","event":"tenants.lookup.exact.ok","rid":null,"ms":195.3193,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:01:20.254Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:01:20.254Z","event":"tenants.lookup.exact.ok","rid":null,"ms":192.8763,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:01:20.255Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:01:20.256Z","event":"tenants.lookup.exact.ok","rid":null,"ms":176.2693,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:01:20.256Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:01:20.278Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.1341,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:01:20.279Z","event":"tenancy.ok","rid":null,"ms":201,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:01:20.286Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.8187,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:01:20.287Z","event":"tenancy.ok","rid":null,"ms":226,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:01:20.295Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.6146,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:01:20.296Z","event":"tenancy.ok","rid":null,"ms":239,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:02:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:02:19.611Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:02:19.617Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.6606,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:02:19.620Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:02:19.636Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:02:19.638Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:02:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9677,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:02:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:02:19.675Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:02:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.3503,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:02:19.687Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:02:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:02:19.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.1317,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:02:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:02:19.735Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:02:19.738Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.3656,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:02:19.739Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:02:19.751Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:02:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.7705,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:02:19.760Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:02:19.766Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.1365,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:02:19.768Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:02:19.776Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.2346,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:02:19.778Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:02:19.779Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.4638,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:02:19.780Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:02:19.807Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:02:19.811Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:02:19.818Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.1503,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:02:19.819Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:02:19.828Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.3549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:02:19.829Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:02:19.838Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.6445,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:02:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:02:19.842Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9097,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:02:19.843Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:02:19.856Z","event":"tenants.lookup.default.ok","rid":null,"ms":11.7319,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:02:19.857Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:02:19.860Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.9252,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:02:19.861Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:02:19.904Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:02:19.923Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:02:19.936Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.8452,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:02:19.937Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:02:19.946Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.4127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:02:19.947Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:02:19.975Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.1326,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:02:19.976Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:02:19.978Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.4791,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:02:19.979Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:03:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:03:19.599Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:03:19.618Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.6866,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:03:19.620Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:03:19.621Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.6027,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:03:19.622Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:03:19.657Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5527,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:03:19.658Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:03:19.667Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.9729,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:03:19.668Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:03:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:03:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1029,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:03:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:03:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:03:19.750Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:03:19.757Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:03:19.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.6783,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:03:19.763Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:03:19.772Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.695,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:03:19.773Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:03:19.781Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.9529,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:03:19.783Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:03:19.786Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.2925,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:03:19.787Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:03:19.795Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:03:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.4486,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:03:19.801Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:03:19.806Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.1886,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:03:19.807Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:03:19.811Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.2148,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:03:19.812Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:03:19.822Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:03:19.837Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.5688,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:03:19.840Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:03:19.843Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.2263,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:03:19.844Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:03:19.856Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:03:19.877Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3448,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:03:19.879Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:03:19.887Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.8564,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:03:19.888Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:03:19.895Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.0049,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:03:19.898Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:03:19.920Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.7911,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:03:19.921Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:03:19.953Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:03:19.986Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.9243,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:03:19.986Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:03:20.017Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.5137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:03:20.017Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:04:19.578Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:04:19.618Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:04:19.621Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2115,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:04:19.622Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:04:19.683Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:04:19.712Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:04:19.776Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:04:19.855Z","event":"tenants.lookup.exact.ok","rid":null,"ms":235.6782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:04:19.857Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:04:19.859Z","event":"tenants.lookup.exact.ok","rid":null,"ms":174.5174,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:04:19.861Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:04:19.863Z","event":"tenants.lookup.exact.ok","rid":null,"ms":149.6263,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:04:19.865Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:04:19.867Z","event":"tenants.lookup.exact.ok","rid":null,"ms":86.7019,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:04:19.868Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:04:19.870Z","event":"tenants.lookup.default.ok","rid":null,"ms":246.3889,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:04:19.871Z","event":"tenancy.ok","rid":null,"ms":293,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:04:19.903Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5495,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:04:19.905Z","event":"tenancy.ok","rid":null,"ms":129,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:04:19.918Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.8568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:04:19.923Z","event":"tenancy.ok","rid":null,"ms":240,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:04:19.939Z","event":"tenants.lookup.default.ok","rid":null,"ms":73.209,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:04:19.943Z","event":"tenancy.ok","rid":null,"ms":231,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:04:19.952Z","event":"tenants.lookup.default.ok","rid":null,"ms":93.5882,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:04:19.956Z","event":"tenancy.ok","rid":null,"ms":338,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:04:20.004Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:04:20.046Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:04:20.050Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:04:20.054Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:04:20.088Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:04:20.459Z","event":"tenants.lookup.exact.ok","rid":null,"ms":453.8211,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:04:20.473Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:04:20.475Z","event":"tenants.lookup.exact.ok","rid":null,"ms":427.4426,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:04:20.477Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:04:20.480Z","event":"tenants.lookup.exact.ok","rid":null,"ms":428.3962,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:04:20.482Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:04:20.483Z","event":"tenants.lookup.exact.ok","rid":null,"ms":428.6581,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:04:20.485Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:04:20.487Z","event":"tenants.lookup.exact.ok","rid":null,"ms":397.5987,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:04:20.488Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:04:20.492Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.4753,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:04:20.493Z","event":"tenancy.ok","rid":null,"ms":447,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:04:20.502Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.6699,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:04:20.504Z","event":"tenancy.ok","rid":null,"ms":500,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:04:20.520Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5823,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:04:20.522Z","event":"tenancy.ok","rid":null,"ms":468,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:04:20.537Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.6119,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:04:20.539Z","event":"tenancy.ok","rid":null,"ms":451,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:04:20.552Z","event":"tenants.lookup.default.ok","rid":null,"ms":69.5866,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:04:20.554Z","event":"tenancy.ok","rid":null,"ms":504,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T17:05:19.582Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:05:19.611Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:05:19.626Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5528,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:05:19.629Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:05:19.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.5787,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:05:19.651Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:05:19.662Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.8661,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:05:19.663Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:05:19.677Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.5016,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:05:19.679Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:05:19.694Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:05:19.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.3041,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:05:19.719Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:05:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:05:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:05:19.750Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:05:19.758Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.258,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:05:19.759Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:05:19.765Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.1732,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:05:19.766Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:05:19.768Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.0054,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:05:19.769Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:05:19.777Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.5919,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:05:19.779Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:05:19.788Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.1868,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:05:19.789Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:05:19.799Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7327,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:05:19.801Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:05:19.807Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:05:19.815Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:05:19.827Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.9239,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:05:19.829Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:05:19.837Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.4732,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:05:19.838Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:05:19.839Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7184,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:05:19.840Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:05:19.859Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.9224,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:05:19.861Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:05:19.869Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.2497,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:05:19.870Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:05:19.878Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:05:19.898Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.2907,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:05:19.899Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:05:19.921Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:05:19.945Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.8722,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:05:19.946Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:05:19.963Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.1027,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:05:19.964Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:05:19.990Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.2945,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:05:19.991Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:06:19.578Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:06:19.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:06:19.625Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:06:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:06:19.630Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.1867,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:06:19.631Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:06:19.658Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.5729,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:06:19.659Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:06:19.662Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4761,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:06:19.663Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:06:19.697Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:06:19.704Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:06:19.710Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:06:19.717Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:06:19.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.6531,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:06:19.727Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:06:19.728Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.2371,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:06:19.729Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:06:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.7348,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:06:19.734Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:06:19.737Z","event":"tenants.lookup.default.ok","rid":null,"ms":9.1959,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:06:19.737Z","event":"tenancy.ok","rid":null,"ms":33,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:06:19.741Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.0042,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:06:19.742Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:06:19.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.7013,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:06:19.760Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:06:19.766Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0672,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:06:19.767Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:06:19.772Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.7692,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:06:19.773Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:06:19.783Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:06:19.799Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.6868,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:06:19.800Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:06:19.815Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:06:19.818Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:06:19.833Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0808,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:06:19.834Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:06:19.837Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.4735,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:06:19.838Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:06:19.839Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.713,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:06:19.840Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:06:19.852Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:06:19.854Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.3155,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:06:19.856Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:06:19.862Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.1668,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:06:19.863Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:06:19.875Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.3381,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:06:19.876Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:06:19.893Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.3391,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:06:19.895Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:07:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:07:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:07:19.621Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:07:19.623Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:07:19.638Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.5153,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:07:19.640Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:07:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.0388,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:07:19.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:07:19.679Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.664,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:07:19.681Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:07:19.694Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:07:19.700Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:07:19.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.379,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:07:19.718Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:07:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.0596,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:07:19.722Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:07:19.729Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:07:19.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:07:19.758Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4545,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:07:19.759Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:07:19.760Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.2911,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:07:19.760Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:07:19.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.0242,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:07:19.762Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:07:19.767Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.0647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:07:19.768Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:07:19.775Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:07:19.798Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.8128,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:07:19.799Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:07:19.807Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.1382,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:07:19.808Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:07:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.8461,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:07:19.814Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:07:19.816Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:07:19.831Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:07:19.839Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.1879,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:07:19.841Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:07:19.846Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2388,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:07:19.847Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:07:19.858Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.4885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:07:19.859Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:07:19.863Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.1247,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:07:19.864Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:07:19.874Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:07:19.899Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.6323,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:07:19.900Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:07:19.904Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.9901,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:07:19.905Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:07:19.938Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.1637,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:07:19.939Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:08:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:08:19.616Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:08:19.625Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0636,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:08:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:08:19.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.4129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:08:19.639Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:08:19.658Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.6985,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:08:19.659Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:08:19.661Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.6943,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:08:19.662Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:08:19.677Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:08:19.685Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:08:19.690Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:08:19.700Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:08:19.702Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.1327,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:08:19.704Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:08:19.705Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.6919,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:08:19.705Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:08:19.708Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.8062,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:08:19.708Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:08:19.733Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8711,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:08:19.736Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:08:19.737Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2117,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:08:19.743Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:08:19.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.9306,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:08:19.750Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:08:19.756Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.7068,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:08:19.757Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:08:19.765Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8253,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:08:19.766Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:08:19.797Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:08:19.808Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:08:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.1047,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:08:19.814Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:08:19.826Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:08:19.834Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.8627,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:08:19.835Z","event":"tenancy.ok","rid":null,"ms":38,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:08:19.840Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.1472,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:08:19.841Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:08:19.853Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:08:19.855Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7009,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:08:19.856Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:08:19.858Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.097,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:08:19.859Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:08:19.874Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.3056,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:08:19.875Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:08:19.878Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.1285,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:08:19.879Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:08:19.893Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.5551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:08:19.894Z","event":"tenancy.ok","rid":null,"ms":41,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:09:19.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:09:19.613Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:09:19.621Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.4226,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:09:19.622Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:09:19.640Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.7051,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:09:19.641Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:09:19.645Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.8211,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:09:19.646Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:09:19.671Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:09:19.679Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.1242,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:09:19.680Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:09:19.687Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:09:19.700Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:09:19.702Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:09:19.703Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:09:19.705Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.617,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:09:19.705Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:09:19.712Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:09:19.735Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.5361,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:09:19.736Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:09:19.739Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8606,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:09:19.739Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:09:19.742Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.9427,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:09:19.742Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:09:19.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.9815,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:09:19.750Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:09:19.755Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.6406,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:09:19.756Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:09:19.776Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.8935,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:09:19.778Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:09:19.814Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:09:19.826Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:09:19.831Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:09:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.3183,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:09:19.835Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:09:19.854Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:09:19.855Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:09:19.856Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.2279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:09:19.856Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:09:19.858Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.1813,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:09:19.858Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:09:19.875Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:09:19.876Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.0045,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:09:19.877Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:09:19.883Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.5111,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:09:19.885Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:09:19.894Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.4374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:09:19.895Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:09:19.914Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.6576,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:09:19.916Z","event":"tenancy.ok","rid":null,"ms":41,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T17:10:19.585Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:10:19.616Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:10:19.645Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.8917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:10:19.646Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:10:19.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.5247,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:10:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:10:19.681Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.2828,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:10:19.682Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:10:19.693Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.8239,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:10:19.694Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:10:19.710Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:10:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.7897,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:10:19.735Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:10:19.745Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:10:19.755Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.2039,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:10:19.756Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:10:19.772Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:10:19.775Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:10:19.781Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.9257,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:10:19.782Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:10:19.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:10:19.810Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.3355,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:10:19.811Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:10:19.812Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.0755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:10:19.813Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:10:19.815Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5578,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:10:19.816Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:10:19.824Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:10:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.6532,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:10:19.835Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:10:19.836Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.4155,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:10:19.837Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:10:19.842Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.7545,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:10:19.843Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:10:19.849Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.3042,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:10:19.850Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:10:19.854Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.8104,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:10:19.855Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:10:19.874Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:10:19.877Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.0562,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:10:19.878Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:10:19.894Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.5605,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:10:19.896Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:10:19.899Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:10:19.920Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.9247,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:10:19.921Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:10:19.925Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2123,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:10:19.925Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:10:19.954Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.8178,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:10:19.955Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:11:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:11:19.611Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:11:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:11:19.690Z","event":"tenants.lookup.exact.ok","rid":null,"ms":83.2671,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:11:19.693Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:11:19.698Z","event":"tenants.lookup.exact.ok","rid":null,"ms":85.3738,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:11:19.699Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:11:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:11:19.723Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.4197,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:11:19.724Z","event":"tenancy.ok","rid":null,"ms":113,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:11:19.730Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.4135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:11:19.732Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:11:19.735Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.7785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:11:19.736Z","event":"tenancy.ok","rid":null,"ms":144,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:11:19.745Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.1547,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:11:19.747Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:11:19.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.289,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:11:19.750Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:11:19.787Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:11:19.790Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:11:19.792Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.5333,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:11:19.794Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:11:19.806Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:11:19.820Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:11:19.822Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.0405,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:11:19.823Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:11:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.5544,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:11:19.826Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:11:19.828Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.0913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:11:19.829Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:11:19.868Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:11:19.918Z","event":"tenants.lookup.exact.ok","rid":null,"ms":96.9901,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:11:19.919Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:11:19.921Z","event":"tenants.lookup.default.ok","rid":null,"ms":96.3045,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:11:19.921Z","event":"tenancy.ok","rid":null,"ms":131,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:11:19.925Z","event":"tenants.lookup.default.ok","rid":null,"ms":94.8458,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:11:19.926Z","event":"tenancy.ok","rid":null,"ms":120,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:11:19.935Z","event":"tenants.lookup.exact.ok","rid":null,"ms":65.7488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:11:19.936Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:11:19.938Z","event":"tenants.lookup.default.ok","rid":null,"ms":110.8105,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:11:19.939Z","event":"tenancy.ok","rid":null,"ms":152,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:11:19.966Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.3936,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:11:19.968Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:11:19.975Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.837,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:11:19.978Z","event":"tenancy.ok","rid":null,"ms":158,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:11:20.022Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:11:20.040Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.8514,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:11:20.041Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:11:20.080Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.4081,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:11:20.080Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:12:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:12:19.620Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:12:19.642Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.9537,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:12:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:12:19.645Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.2161,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:12:19.646Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:12:19.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:12:19.685Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.3812,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:12:19.688Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:12:19.698Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.2406,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:12:19.700Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:12:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:12:19.731Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.4191,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:12:19.734Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:12:19.742Z","event":"tenants.lookup.exact.ok","rid":null,"ms":13.506,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:12:19.743Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:12:19.763Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:12:19.765Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.9305,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:12:19.766Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:12:19.773Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.1236,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:12:19.775Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:12:19.784Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:12:19.788Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:12:19.807Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.6537,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:12:19.808Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:12:19.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.6782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:12:19.814Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:12:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.3807,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:12:19.818Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:12:19.834Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:12:19.841Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:12:19.843Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3849,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:12:19.844Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:12:19.852Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:12:19.853Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:12:19.859Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.3202,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:12:19.861Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:12:19.871Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.6776,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:12:19.872Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:12:19.874Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5503,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:12:19.875Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:12:19.907Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.4751,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:12:19.909Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:12:19.915Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.3887,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:12:19.915Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:12:19.936Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:12:19.960Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.4319,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:12:19.961Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:12:20.001Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.3798,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:12:20.002Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:13:19.575Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:13:19.606Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:13:19.609Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.988,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:13:19.616Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:13:19.647Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.7915,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:13:19.648Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:13:19.649Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.6681,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:13:19.649Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:13:19.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:13:19.688Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6181,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:13:19.690Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:13:19.703Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:13:19.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.8127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:13:19.714Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:13:19.719Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:13:19.723Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.8187,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:13:19.724Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:13:19.730Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:13:19.737Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.2753,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:13:19.738Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:13:19.740Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.2257,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:13:19.741Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:13:19.748Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.5487,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:13:19.749Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:13:19.759Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.9595,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:13:19.761Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:13:19.763Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.2657,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:13:19.764Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:13:19.783Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:13:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:13:19.798Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.495,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:13:19.799Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:13:19.806Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.8101,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:13:19.807Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:13:19.808Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.1953,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:13:19.809Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:13:19.814Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:13:19.821Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.96,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:13:19.823Z","event":"tenancy.ok","rid":null,"ms":36,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:13:19.835Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.8755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:13:19.836Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:13:19.841Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.591,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:13:19.843Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:13:19.855Z","event":"tenants.lookup.default.ok","rid":null,"ms":11.3561,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:13:19.857Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:13:19.869Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:13:19.895Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.5667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:13:19.896Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:13:19.915Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.2989,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:13:19.915Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:14:19.597Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:14:19.623Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:14:19.650Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.7085,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:14:19.651Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:14:19.652Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.3959,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:14:19.653Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:14:19.681Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:14:19.683Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.9991,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:14:19.684Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:14:19.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5023,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:14:19.693Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:14:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:14:19.724Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.5113,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:14:19.726Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:14:19.734Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:14:19.746Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.9378,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:14:19.747Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:14:19.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.7329,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:14:19.750Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:14:19.756Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.3168,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:14:19.758Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:14:19.761Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:14:19.771Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:14:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:14:19.796Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.7667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:14:19.797Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:14:19.798Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.3139,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:14:19.799Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:14:19.804Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.3559,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:14:19.805Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:14:19.809Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.5244,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:14:19.812Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:14:19.824Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.2457,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:14:19.825Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:14:19.827Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0422,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:14:19.828Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:14:19.837Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6252,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:14:19.839Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:14:19.847Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.2254,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:14:19.848Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:14:19.927Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:14:19.935Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:14:19.961Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.2182,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:14:19.962Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:14:19.963Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.708,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:14:19.963Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:14:20.002Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.3497,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:14:20.002Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:14:20.010Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.6828,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:14:20.011Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T17:15:19.583Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:15:19.613Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:15:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.9094,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:15:19.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:15:19.642Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.786,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:15:19.643Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:15:19.650Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1264,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:15:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:15:19.680Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:15:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.4258,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:15:19.691Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:15:19.704Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:15:19.708Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.0467,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:15:19.710Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:15:19.722Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.6518,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:15:19.724Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:15:19.727Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.3385,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:15:19.728Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:15:19.736Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:15:19.749Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:15:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1301,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:15:19.758Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:15:19.765Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.2457,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:15:19.766Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:15:19.767Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5954,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:15:19.768Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:15:19.772Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:15:19.795Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:15:19.806Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6003,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:15:19.807Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:15:19.812Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.8698,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:15:19.813Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:15:19.814Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.903,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:15:19.815Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:15:19.816Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.3566,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:15:19.817Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:15:19.837Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:15:19.839Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.986,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:15:19.842Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:15:19.848Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.6,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:15:19.849Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:15:19.858Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.5693,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:15:19.859Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:15:19.882Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.9302,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:15:19.883Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:15:19.891Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:15:19.923Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.6186,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:15:19.924Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:15:19.938Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.8405,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:15:19.940Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:16:19.586Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:16:19.608Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.3603,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:16:19.610Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:16:19.618Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:16:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.6745,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:16:19.642Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:16:19.643Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.2364,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:16:19.644Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:16:19.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:16:19.688Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.5638,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:16:19.689Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:16:19.701Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:16:19.706Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.9192,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:16:19.708Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:16:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:16:19.727Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.3401,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:16:19.729Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:16:19.730Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.4501,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:16:19.731Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:16:19.742Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:16:19.757Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.5042,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:16:19.758Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:16:19.761Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:16:19.777Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:16:19.779Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.6737,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:16:19.780Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:16:19.790Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.03,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:16:19.792Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:16:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.2339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:16:19.795Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:16:19.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.7669,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:16:19.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:16:19.816Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:16:19.824Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.413,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:16:19.825Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:16:19.852Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.6823,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:16:19.853Z","event":"tenancy.ok","rid":null,"ms":111,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:16:19.856Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.7177,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:16:19.856Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:16:19.857Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.2125,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:16:19.858Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:16:19.863Z","event":"tenants.lookup.default.ok","rid":null,"ms":59.7464,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:16:19.864Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:16:19.890Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2006,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:16:19.891Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:16:19.961Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:16:19.994Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0513,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:16:19.996Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:16:20.037Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.4833,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:16:20.038Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:17:19.583Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:17:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.3935,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:17:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:17:19.634Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:17:19.663Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.3007,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:17:19.665Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:17:19.671Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.8287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:17:19.672Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:17:19.675Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:17:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:17:19.713Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:17:19.718Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.5857,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:17:19.719Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:17:19.724Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.0331,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:17:19.724Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:17:19.725Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.7444,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:17:19.726Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:17:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.4754,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:17:19.735Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:17:19.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:17:19.742Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.4205,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:17:19.743Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:17:19.752Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.3824,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:17:19.753Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:17:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.114,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:17:19.758Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:17:19.763Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.3374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:17:19.764Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:17:19.786Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:17:19.787Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:17:19.811Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:17:19.821Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:17:19.838Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.358,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:17:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:17:19.841Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.1272,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:17:19.842Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:17:19.857Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:17:19.860Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.4888,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:17:19.861Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:17:19.869Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.9701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:17:19.870Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:17:19.877Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.8423,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:17:19.879Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:17:19.903Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.1775,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:17:19.904Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:17:19.943Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:17:19.977Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1598,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:17:19.978Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:17:19.998Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.5541,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:17:20.000Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:18:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:18:19.613Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:18:19.647Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.0924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:18:19.648Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:18:19.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.7026,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:18:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:18:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:18:19.687Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.7897,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:18:19.688Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:18:19.693Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.296,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:18:19.695Z","event":"tenancy.ok","rid":null,"ms":106,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:18:19.713Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:18:19.723Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.2711,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:18:19.724Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:18:19.731Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:18:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.7177,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:18:19.735Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:18:19.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:18:19.764Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.4179,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:18:19.764Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:18:19.768Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0657,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:18:19.769Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:18:19.774Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.8924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:18:19.775Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:18:19.776Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.9952,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:18:19.777Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:18:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:18:19.806Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:18:20.011Z","event":"tenants.lookup.default.ok","rid":null,"ms":235.812,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:18:20.014Z","event":"tenancy.ok","rid":null,"ms":283,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:18:20.021Z","event":"tenants.lookup.default.ok","rid":null,"ms":242.6308,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:18:20.022Z","event":"tenancy.ok","rid":null,"ms":283,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:18:20.032Z","event":"tenants.lookup.exact.ok","rid":null,"ms":237.2169,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:18:20.034Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:18:20.037Z","event":"tenants.lookup.exact.ok","rid":null,"ms":229.4383,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:18:20.038Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:18:20.058Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.9346,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:18:20.059Z","event":"tenancy.ok","rid":null,"ms":265,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:18:20.067Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.1832,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:18:20.068Z","event":"tenancy.ok","rid":null,"ms":262,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:18:20.073Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:18:20.093Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:18:20.109Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.7093,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:18:20.111Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:18:20.113Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.9731,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:18:20.114Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:18:20.138Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.8584,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:18:20.139Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:18:20.146Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4987,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:18:20.147Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:19:19.583Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:19:19.616Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:19:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.434,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:19:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:19:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.5882,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:19:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:19:19.648Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.6055,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:19:19.649Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:19:19.675Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:19:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.7973,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:19:19.687Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:19:19.698Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.0246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:19:19.699Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:19:19.707Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:19:19.716Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:19:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:19:19.723Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.7458,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:19:19.725Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:19:19.731Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.1959,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:19:19.732Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:19:19.739Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.8869,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:19:19.739Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:19:19.750Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.1282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:19:19.751Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:19:19.753Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.0315,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:19:19.754Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:19:19.762Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:19:19.764Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.6852,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:19:19.765Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:19:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:19:19.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.2305,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:19:19.785Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:19:19.790Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.114,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:19:19.791Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:19:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:19:19.822Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.0113,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:19:19.823Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:19:19.828Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.3852,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:19:19.829Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:19:19.832Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.0265,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:19:19.833Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:19:19.861Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5465,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:19:19.862Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:19:19.867Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0854,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:19:19.867Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:19:19.919Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:19:19.938Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.2635,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:19:19.939Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:19:19.958Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.3306,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:19:19.960Z","event":"tenancy.ok","rid":null,"ms":41,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T17:20:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:20:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:20:19.652Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.9267,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:20:19.653Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:20:19.655Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.2475,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:20:19.656Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:20:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:20:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.4512,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:20:19.691Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:20:19.703Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.8306,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:20:19.705Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:20:19.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.2153,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:20:19.727Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:20:19.746Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.8503,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:20:19.747Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:20:19.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:20:19.785Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.366,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:20:19.785Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:20:19.789Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:20:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:20:19.818Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:20:19.820Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2247,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:20:19.820Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:20:19.826Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.4891,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:20:19.828Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:20:19.830Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.9561,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:20:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:20:19.851Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:20:19.858Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:20:19.994Z","event":"tenants.lookup.exact.ok","rid":null,"ms":174.9048,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:20:19.996Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:20:19.997Z","event":"tenants.lookup.default.ok","rid":null,"ms":165.5808,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:20:19.998Z","event":"tenancy.ok","rid":null,"ms":208,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:20:20.001Z","event":"tenants.lookup.default.ok","rid":null,"ms":172.3957,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:20:20.002Z","event":"tenancy.ok","rid":null,"ms":208,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:20:20.009Z","event":"tenants.lookup.exact.ok","rid":null,"ms":156.8417,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:20:20.010Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:20:20.012Z","event":"tenants.lookup.exact.ok","rid":null,"ms":152.7261,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:20:20.013Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:20:20.019Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0759,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:20:20.020Z","event":"tenancy.ok","rid":null,"ms":202,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:20:20.031Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.3164,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:20:20.031Z","event":"tenancy.ok","rid":null,"ms":180,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:20:20.041Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.7254,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:20:20.042Z","event":"tenancy.ok","rid":null,"ms":184,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:20:20.095Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:20:20.118Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.2073,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:20:20.119Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:20:20.286Z","event":"tenants.lookup.default.ok","rid":null,"ms":167.2699,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:20:20.289Z","event":"tenancy.ok","rid":null,"ms":194,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:21:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:21:19.614Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:21:19.625Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.8783,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:21:19.627Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:21:19.634Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.9783,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:21:19.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:21:19.664Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.6493,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:21:19.665Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:21:19.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.8782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:21:19.676Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:21:19.691Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:21:19.706Z","event":"tenants.lookup.exact.ok","rid":null,"ms":13.3785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:21:19.708Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:21:19.735Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:21:19.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:21:19.744Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8118,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:21:19.747Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:21:19.759Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:21:19.761Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.5316,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:21:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:21:19.765Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.5555,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:21:19.766Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:21:19.784Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:21:19.786Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.8819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:21:19.787Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:21:19.789Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.3282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:21:19.790Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:21:19.797Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.1932,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:21:19.798Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:21:19.807Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:21:19.810Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0686,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:21:19.811Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:21:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.3249,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:21:19.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:21:19.846Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.5274,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:21:19.847Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:21:19.848Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.6513,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:21:19.850Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:21:19.877Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:21:19.884Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.5105,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:21:19.886Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:21:19.903Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:21:19.905Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.6526,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:21:19.906Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:21:19.925Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.4815,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:21:19.926Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:21:19.932Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.6384,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:21:19.933Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:21:19.960Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.4184,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:21:19.961Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:22:19.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:22:19.606Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:22:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:22:19.719Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:22:19.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":130.5394,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:22:19.728Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:22:19.730Z","event":"tenants.lookup.exact.ok","rid":null,"ms":122.2923,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:22:19.732Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:22:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.3018,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:22:19.735Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:22:19.744Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.5493,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:22:19.745Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:22:19.746Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.2507,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:22:19.747Z","event":"tenancy.ok","rid":null,"ms":141,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:22:19.756Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.6162,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:22:19.758Z","event":"tenancy.ok","rid":null,"ms":177,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:22:19.769Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.2108,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:22:19.771Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:22:19.786Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.751,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:22:19.788Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:22:19.824Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:22:19.835Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:22:19.847Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:22:19.860Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:22:19.862Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.6453,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:22:19.862Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:22:19.867Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:22:19.870Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.408,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:22:19.871Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:22:20.021Z","event":"tenants.lookup.default.ok","rid":null,"ms":157.5993,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:22:20.022Z","event":"tenancy.ok","rid":null,"ms":198,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:22:20.027Z","event":"tenants.lookup.exact.ok","rid":null,"ms":178.5523,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:22:20.027Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:22:20.029Z","event":"tenants.lookup.exact.ok","rid":null,"ms":167.9921,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:22:20.030Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:22:20.031Z","event":"tenants.lookup.default.ok","rid":null,"ms":158.663,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:22:20.032Z","event":"tenancy.ok","rid":null,"ms":197,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:22:20.041Z","event":"tenants.lookup.exact.ok","rid":null,"ms":172.3112,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:22:20.042Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:22:20.060Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.8956,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:22:20.061Z","event":"tenancy.ok","rid":null,"ms":214,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:22:20.071Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.9314,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:22:20.073Z","event":"tenancy.ok","rid":null,"ms":206,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:22:20.081Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.2372,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:22:20.082Z","event":"tenancy.ok","rid":null,"ms":222,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:22:20.121Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:22:20.142Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.8693,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:22:20.143Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:22:20.300Z","event":"tenants.lookup.default.ok","rid":null,"ms":155.8546,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:22:20.303Z","event":"tenancy.ok","rid":null,"ms":182,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:23:19.582Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:23:19.626Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:23:19.628Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.8863,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:23:19.630Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:23:19.673Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.1412,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:23:19.674Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:23:19.684Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.3633,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:23:19.686Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:23:19.696Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:23:19.706Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.3883,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:23:19.708Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:23:19.755Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:23:19.762Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:23:19.767Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:23:19.781Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:23:19.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":137.6546,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:23:19.836Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:23:19.837Z","event":"tenants.lookup.exact.ok","rid":null,"ms":74.2287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:23:19.838Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:23:19.839Z","event":"tenants.lookup.exact.ok","rid":null,"ms":81.492,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:23:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:23:19.840Z","event":"tenants.lookup.exact.ok","rid":null,"ms":71.5195,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:23:19.840Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:23:19.841Z","event":"tenants.lookup.exact.ok","rid":null,"ms":58.2382,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:23:19.841Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:23:19.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7732,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:23:19.868Z","event":"tenancy.ok","rid":null,"ms":172,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:23:19.877Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.7163,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:23:19.879Z","event":"tenancy.ok","rid":null,"ms":124,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:23:19.893Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.4931,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:23:19.894Z","event":"tenancy.ok","rid":null,"ms":127,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:23:19.907Z","event":"tenants.lookup.default.ok","rid":null,"ms":69.2229,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:23:19.910Z","event":"tenancy.ok","rid":null,"ms":148,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:23:19.924Z","event":"tenants.lookup.default.ok","rid":null,"ms":83.0869,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:23:19.926Z","event":"tenancy.ok","rid":null,"ms":145,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:23:20.038Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:23:20.046Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:23:20.050Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:23:20.061Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.1636,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:23:20.064Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:23:20.069Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.3091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:23:20.070Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:23:20.074Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.6238,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:23:20.077Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:23:20.106Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.9139,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:23:20.106Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:23:20.111Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.4484,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:23:20.113Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:23:20.117Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.0969,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:23:20.118Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:24:19.583Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:24:19.623Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:24:19.628Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.0419,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:24:19.629Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:24:19.672Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.5533,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:24:19.674Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:24:19.682Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.3312,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:24:19.684Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:24:19.694Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:24:19.707Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.807,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:24:19.708Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:24:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:24:19.727Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6308,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:24:19.728Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:24:19.731Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:24:19.759Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:24:19.769Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.8423,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:24:19.770Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:24:19.771Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.7552,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:24:19.773Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:24:19.774Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.0561,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:24:19.776Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:24:19.789Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:24:19.792Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.1009,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:24:19.793Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:24:19.800Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.132,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:24:19.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:24:19.806Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0625,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:24:19.807Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:24:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.6457,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:24:19.815Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:24:19.820Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:24:19.825Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.4627,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:24:19.826Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:24:19.832Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.5755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:24:19.834Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:24:19.841Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.0804,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:24:19.842Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:24:19.847Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:24:19.865Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:24:19.872Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.1064,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:24:19.873Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:24:19.880Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7145,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:24:19.884Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:24:19.902Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.5392,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:24:19.903Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:24:19.907Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.6209,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:24:19.908Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:24:19.923Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.2175,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:24:19.924Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T17:25:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:25:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:25:19.626Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.6111,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:25:19.627Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:25:19.634Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.027,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:25:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:25:19.667Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.203,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:25:19.668Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:25:19.673Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.6234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:25:19.675Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:25:19.687Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:25:19.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6882,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:25:19.714Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:25:19.729Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:25:19.738Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:25:19.744Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.5955,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:25:19.745Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:25:19.764Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:25:19.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:25:19.768Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.272,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:25:19.771Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:25:19.790Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:25:19.801Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1268,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:25:19.802Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:25:19.809Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.3426,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:25:19.810Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:25:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7278,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:25:19.822Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:25:19.849Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.6422,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:25:19.852Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:25:19.912Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:25:19.941Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.3869,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:25:19.942Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:25:19.966Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.1028,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:25:19.968Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:25:20.096Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:25:20.121Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.8822,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:25:20.122Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:25:20.126Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:25:20.141Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.7695,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:25:20.143Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:25:20.154Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2521,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:25:20.155Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:25:20.191Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.1901,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:25:20.192Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:25:20.338Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:25:20.368Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.0336,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:25:20.371Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:25:20.408Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.9684,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:25:20.410Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:26:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:26:19.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.1582,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:26:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:26:19.634Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:26:19.676Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:26:19.687Z","event":"tenants.lookup.default.ok","rid":null,"ms":57.9989,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:26:19.688Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:26:19.693Z","event":"tenants.lookup.exact.ok","rid":null,"ms":57.4692,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:26:19.694Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:26:19.709Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:26:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.0299,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:26:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:26:19.722Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.8864,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:26:19.722Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:26:19.730Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:26:19.756Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:26:19.767Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.9714,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:26:19.768Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:26:19.775Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.4013,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:26:19.777Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:26:19.779Z","event":"tenants.lookup.exact.ok","rid":null,"ms":68.1915,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:26:19.781Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:26:19.790Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:26:19.805Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.9502,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:26:19.806Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:26:19.808Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.7784,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:26:19.809Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:26:19.819Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:26:19.822Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.1668,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:26:19.823Z","event":"tenancy.ok","rid":null,"ms":114,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:26:19.838Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.2886,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:26:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:26:19.847Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.7648,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:26:19.848Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:26:19.869Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6563,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:26:19.870Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:26:19.878Z","event":"tenants.lookup.exact.ok","rid":null,"ms":57.1182,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:26:19.881Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:26:19.907Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:26:19.917Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6133,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:26:19.918Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:26:19.963Z","event":"tenants.lookup.exact.ok","rid":null,"ms":54.8114,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:26:19.965Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:26:19.985Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.8915,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:26:19.986Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:26:20.053Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:26:20.094Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.1555,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:26:20.096Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:26:20.134Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.4687,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:26:20.135Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:27:19.597Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:27:19.631Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:27:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:27:19.696Z","event":"tenants.lookup.exact.ok","rid":null,"ms":62.5982,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:27:19.697Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:27:19.698Z","event":"tenants.lookup.exact.ok","rid":null,"ms":98.8862,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:27:19.698Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:27:19.709Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.4396,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:27:19.710Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:27:19.717Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:27:19.728Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.1101,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:27:19.729Z","event":"tenancy.ok","rid":null,"ms":131,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:27:19.736Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.7027,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:27:19.738Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:27:19.753Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.3077,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:27:19.756Z","event":"tenancy.ok","rid":null,"ms":125,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:27:19.767Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.7397,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:27:19.769Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:27:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.6342,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:27:19.795Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:27:19.833Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:27:19.836Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:27:19.844Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:27:19.853Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:27:19.863Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:27:19.971Z","event":"tenants.lookup.exact.ok","rid":null,"ms":134.1565,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:27:19.973Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:27:19.975Z","event":"tenants.lookup.exact.ok","rid":null,"ms":119.9937,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:27:19.976Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:27:19.977Z","event":"tenants.lookup.exact.ok","rid":null,"ms":143.0415,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:27:19.978Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:27:19.980Z","event":"tenants.lookup.exact.ok","rid":null,"ms":115.9827,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:27:19.981Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:27:19.981Z","event":"tenants.lookup.exact.ok","rid":null,"ms":135.9178,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:27:19.982Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:27:20.017Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8338,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:27:20.018Z","event":"tenancy.ok","rid":null,"ms":174,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:27:20.022Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.6859,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:27:20.022Z","event":"tenancy.ok","rid":null,"ms":189,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:27:20.030Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.8115,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:27:20.032Z","event":"tenancy.ok","rid":null,"ms":196,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:27:20.042Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.3982,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:27:20.046Z","event":"tenancy.ok","rid":null,"ms":183,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:27:20.057Z","event":"tenants.lookup.default.ok","rid":null,"ms":80.4101,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:27:20.058Z","event":"tenancy.ok","rid":null,"ms":205,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:27:20.138Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:27:20.272Z","event":"tenants.lookup.exact.ok","rid":null,"ms":132.589,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:27:20.274Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:27:20.317Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.035,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:27:20.318Z","event":"tenancy.ok","rid":null,"ms":180,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:28:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:28:19.598Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:28:19.620Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.4739,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:28:19.621Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:28:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.0216,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:28:19.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:28:19.642Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.4522,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:28:19.642Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:28:19.652Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.6202,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:28:19.653Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:28:19.660Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:28:19.674Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:28:19.679Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:28:19.680Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.1591,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:28:19.681Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:28:19.697Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:28:19.707Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.7563,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:28:19.708Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:28:19.714Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.9983,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:28:19.715Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:28:19.715Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.441,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:28:19.716Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:28:19.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.6934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:28:19.718Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:28:19.743Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.4671,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:28:19.743Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:28:19.746Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.7198,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:28:19.746Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:28:19.751Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.224,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:28:19.752Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:28:19.801Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:28:19.804Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:28:19.819Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:28:19.823Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.6488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:28:19.824Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:28:19.826Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.0297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:28:19.827Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:28:19.844Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.8483,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:28:19.845Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:28:19.846Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.6924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:28:19.847Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:28:19.852Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.7749,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:28:19.853Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:28:19.863Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.0756,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:28:19.865Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:28:19.892Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:28:19.924Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7812,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:28:19.925Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:28:19.943Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.891,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:28:19.944Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:29:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:29:19.622Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:29:19.677Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:29:19.718Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:29:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":124.8005,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:29:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:29:19.732Z","event":"tenants.lookup.exact.ok","rid":null,"ms":108.282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:29:19.733Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:29:19.733Z","event":"tenants.lookup.exact.ok","rid":null,"ms":54.7499,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:29:19.734Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:29:19.757Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.0373,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:29:19.758Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:29:19.758Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0419,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:29:19.759Z","event":"tenancy.ok","rid":null,"ms":166,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:29:19.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4595,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:29:19.763Z","event":"tenancy.ok","rid":null,"ms":141,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:29:19.771Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.0005,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:29:19.773Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:29:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:29:19.801Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.7062,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:29:19.802Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:29:19.809Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.7943,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:29:19.810Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:29:19.837Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:29:19.840Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6116,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:29:19.841Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:29:19.850Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:29:19.854Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:29:19.872Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:29:19.900Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:29:20.055Z","event":"tenants.lookup.exact.ok","rid":null,"ms":181.3058,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:29:20.055Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:29:20.056Z","event":"tenants.lookup.exact.ok","rid":null,"ms":155.3259,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:29:20.057Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:29:20.058Z","event":"tenants.lookup.exact.ok","rid":null,"ms":218.9928,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:29:20.058Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:29:20.059Z","event":"tenants.lookup.exact.ok","rid":null,"ms":206.8742,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:29:20.059Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:29:20.060Z","event":"tenants.lookup.exact.ok","rid":null,"ms":204.4647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:29:20.060Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:29:20.090Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.5406,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:29:20.091Z","event":"tenancy.ok","rid":null,"ms":219,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:29:20.096Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.3424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:29:20.097Z","event":"tenancy.ok","rid":null,"ms":197,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:29:20.104Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.7513,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:29:20.105Z","event":"tenancy.ok","rid":null,"ms":268,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:29:20.112Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.4959,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:29:20.113Z","event":"tenancy.ok","rid":null,"ms":263,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:29:20.122Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.9027,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:29:20.124Z","event":"tenancy.ok","rid":null,"ms":270,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T17:30:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:30:19.619Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:30:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.8865,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:30:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:30:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.5394,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:30:19.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:30:19.650Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.8841,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:30:19.651Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:30:19.671Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:30:19.674Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:30:19.688Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.6163,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:30:19.689Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:30:19.699Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:30:19.701Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.6797,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:30:19.702Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:30:19.704Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4003,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:30:19.705Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:30:19.725Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:30:19.748Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.3088,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:30:19.750Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:30:19.751Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.4691,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:30:19.752Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:30:19.758Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.0856,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:30:19.759Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:30:19.766Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.0083,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:30:19.767Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:30:19.769Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.1249,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:30:19.770Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:30:19.796Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.4915,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:30:19.798Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:30:19.807Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:30:19.823Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:30:19.831Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:30:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.8467,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:30:19.835Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:30:19.844Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.8031,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:30:19.845Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:30:19.846Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:30:19.847Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:30:19.868Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.8015,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:30:19.869Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:30:19.872Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.7151,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:30:19.873Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:30:19.876Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.9244,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:30:19.877Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:30:19.907Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:30:19.926Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.8836,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:30:19.926Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:30:19.948Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.4978,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:30:19.949Z","event":"tenancy.ok","rid":null,"ms":42,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:31:19.586Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:31:19.602Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:31:19.680Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:31:19.712Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:31:19.725Z","event":"tenants.lookup.exact.ok","rid":null,"ms":138.5403,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:31:19.726Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:31:19.727Z","event":"tenants.lookup.exact.ok","rid":null,"ms":123.1194,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:31:19.727Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:31:19.732Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.9061,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:31:19.733Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:31:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.9752,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:31:19.735Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:31:19.768Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3759,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:31:19.772Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:31:19.785Z","event":"tenants.lookup.default.ok","rid":null,"ms":57.6035,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:31:19.788Z","event":"tenancy.ok","rid":null,"ms":186,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:31:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":65.9663,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:31:19.802Z","event":"tenancy.ok","rid":null,"ms":122,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:31:19.814Z","event":"tenants.lookup.default.ok","rid":null,"ms":87.4459,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:31:19.816Z","event":"tenancy.ok","rid":null,"ms":230,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:31:19.829Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:31:19.854Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.6778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:31:19.855Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:31:19.879Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:31:19.884Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:31:19.889Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:31:19.895Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:31:20.037Z","event":"tenants.lookup.default.ok","rid":null,"ms":181.4352,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:31:20.039Z","event":"tenancy.ok","rid":null,"ms":210,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:31:20.042Z","event":"tenants.lookup.exact.ok","rid":null,"ms":162.5037,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:31:20.043Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:31:20.052Z","event":"tenants.lookup.exact.ok","rid":null,"ms":165.7201,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:31:20.053Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:31:20.054Z","event":"tenants.lookup.exact.ok","rid":null,"ms":164.4776,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:31:20.056Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:31:20.058Z","event":"tenants.lookup.exact.ok","rid":null,"ms":161.9424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:31:20.059Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:31:20.075Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:31:20.092Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.382,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:31:20.093Z","event":"tenancy.ok","rid":null,"ms":214,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:31:20.100Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.4681,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:31:20.102Z","event":"tenancy.ok","rid":null,"ms":218,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:31:20.111Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.6038,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:31:20.113Z","event":"tenancy.ok","rid":null,"ms":224,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:31:20.119Z","event":"tenants.lookup.default.ok","rid":null,"ms":59.6427,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:31:20.120Z","event":"tenancy.ok","rid":null,"ms":225,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:31:20.126Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:31:20.127Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:31:20.162Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3444,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:31:20.163Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:32:19.586Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:32:19.614Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:32:19.617Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.9843,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:32:19.618Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:32:19.645Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9003,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:32:19.646Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:32:19.652Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0848,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:32:19.652Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:32:19.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:32:19.681Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.433,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:32:19.683Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:32:19.691Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:32:19.707Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:32:19.712Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:32:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.0335,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:32:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:32:19.721Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.5963,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:32:19.723Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:32:19.724Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.1246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:32:19.725Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:32:19.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.0438,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:32:19.756Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:32:19.758Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.8793,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:32:19.759Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:32:19.763Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.8453,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:32:19.765Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:32:19.771Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.1235,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:32:19.772Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:32:19.795Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.9049,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:32:19.798Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:32:19.805Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:32:19.830Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:32:19.838Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:32:19.840Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.9555,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:32:19.841Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:32:19.860Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.3687,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:32:19.861Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:32:19.866Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.9398,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:32:19.867Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:32:19.869Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.9369,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:32:19.870Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:32:19.885Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.8044,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:32:19.887Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:32:19.892Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.2869,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:32:19.893Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:32:19.903Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:32:19.940Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.9351,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:32:19.941Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:32:19.970Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.9407,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:32:19.971Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:33:19.576Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:33:19.597Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.2137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:33:19.598Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:33:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:33:19.614Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.8865,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:33:19.616Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:33:19.634Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.2836,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:33:19.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:33:19.651Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.6182,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:33:19.652Z","event":"tenancy.ok","rid":null,"ms":42,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:33:19.660Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:33:19.695Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:33:19.699Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.8414,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:33:19.700Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:33:19.716Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:33:19.733Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.676,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:33:19.734Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:33:19.740Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.6805,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:33:19.741Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:33:19.742Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.021,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:33:19.743Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:33:19.756Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:33:19.771Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.0825,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:33:19.773Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:33:19.778Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.0055,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:33:19.779Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:33:19.786Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2498,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:33:19.787Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:33:19.813Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.4397,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:33:19.814Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:33:19.836Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:33:19.864Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.0168,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:33:19.865Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:33:19.868Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:33:19.887Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:33:19.897Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.4889,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:33:19.899Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:33:19.904Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.7059,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:33:19.905Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:33:19.906Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.2054,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:33:19.907Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:33:19.921Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:33:19.949Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.0707,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:33:19.950Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:33:19.953Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.1864,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:33:19.953Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:33:19.957Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.9611,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:33:19.958Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:33:19.975Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.9354,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:33:19.976Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:34:19.577Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:34:19.607Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.8361,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:34:19.609Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:34:19.616Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:34:19.651Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.227,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:34:19.652Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:34:19.660Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.4912,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:34:19.663Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:34:19.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.1517,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:34:19.693Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:34:19.716Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:34:19.733Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:34:19.737Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:34:19.744Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:34:19.748Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.872,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:34:19.749Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:34:19.766Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.6602,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:34:19.767Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:34:19.771Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.4253,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:34:19.772Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:34:19.773Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.7528,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:34:19.773Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:34:19.775Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.0052,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:34:19.776Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:34:19.783Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:34:19.786Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.9983,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:34:19.787Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:34:19.792Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.4072,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:34:19.794Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:34:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9758,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:34:19.801Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:34:19.810Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.8761,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:34:19.811Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:34:19.829Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.4003,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:34:19.830Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:34:19.853Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:34:19.866Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.2094,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:34:19.867Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:34:19.872Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:34:19.885Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.8453,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:34:19.886Z","event":"tenancy.ok","rid":null,"ms":33,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:34:19.898Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:34:19.913Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.1843,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:34:19.914Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:34:19.930Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4848,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:34:19.931Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:34:19.933Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.4898,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:34:19.933Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:34:19.965Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7465,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:34:19.966Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T17:35:19.586Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:35:19.616Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:35:19.619Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7386,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:35:19.620Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:35:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:35:19.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:35:19.653Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5307,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:35:19.653Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:35:19.680Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:35:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.1272,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:35:19.688Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:35:19.710Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:35:19.711Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.961,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:35:19.712Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:35:19.729Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:35:19.736Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.4128,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:35:19.737Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:35:19.745Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.8849,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:35:19.746Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:35:19.748Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:35:19.751Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.1844,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:35:19.752Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:35:19.764Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:35:19.771Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.0275,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:35:19.772Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:35:19.773Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.4652,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:35:19.774Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:35:19.780Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2774,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:35:19.780Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:35:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:35:19.787Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.9925,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:35:19.788Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:35:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.9568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:35:19.794Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:35:19.804Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:35:19.809Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.528,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:35:19.810Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:35:19.812Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.1196,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:35:19.812Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:35:19.830Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.0838,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:35:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:35:19.832Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.8637,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:35:19.833Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:35:19.853Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:35:19.865Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5884,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:35:19.866Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:35:19.873Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.7544,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:35:19.875Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:35:19.905Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6049,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:35:19.906Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:36:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:36:19.608Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:36:19.680Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:36:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:36:19.775Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:36:19.874Z","event":"tenants.lookup.exact.ok","rid":null,"ms":269.8515,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:36:19.876Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:36:19.877Z","event":"tenants.lookup.exact.ok","rid":null,"ms":265.9439,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:36:19.877Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:36:19.878Z","event":"tenants.lookup.exact.ok","rid":null,"ms":195.5299,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:36:19.879Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:36:19.879Z","event":"tenants.lookup.exact.ok","rid":null,"ms":170.4119,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:36:19.880Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:36:19.880Z","event":"tenants.lookup.exact.ok","rid":null,"ms":103.2881,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:36:19.881Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:36:19.904Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.2966,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:36:19.906Z","event":"tenancy.ok","rid":null,"ms":316,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:36:19.914Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.664,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:36:19.916Z","event":"tenancy.ok","rid":null,"ms":236,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:36:19.929Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.0699,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:36:19.931Z","event":"tenancy.ok","rid":null,"ms":323,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:36:19.940Z","event":"tenants.lookup.default.ok","rid":null,"ms":59.9409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:36:19.941Z","event":"tenancy.ok","rid":null,"ms":233,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:36:19.947Z","event":"tenants.lookup.default.ok","rid":null,"ms":65.489,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:36:19.950Z","event":"tenancy.ok","rid":null,"ms":175,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:36:20.086Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:36:20.095Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:36:20.105Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:36:20.115Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:36:20.166Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:36:20.313Z","event":"tenants.lookup.exact.ok","rid":null,"ms":224.9667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:36:20.315Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:36:20.316Z","event":"tenants.lookup.exact.ok","rid":null,"ms":219.5024,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:36:20.317Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:36:20.317Z","event":"tenants.lookup.exact.ok","rid":null,"ms":210.7444,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:36:20.318Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:36:20.319Z","event":"tenants.lookup.exact.ok","rid":null,"ms":151.9942,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:36:20.320Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:36:20.321Z","event":"tenants.lookup.exact.ok","rid":null,"ms":203.8863,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:36:20.322Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:36:20.350Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.9781,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:36:20.351Z","event":"tenancy.ok","rid":null,"ms":265,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:36:20.355Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.2876,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:36:20.356Z","event":"tenancy.ok","rid":null,"ms":261,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:36:20.361Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.4022,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:36:20.362Z","event":"tenancy.ok","rid":null,"ms":257,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:36:20.377Z","event":"tenants.lookup.default.ok","rid":null,"ms":56.685,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:36:20.378Z","event":"tenancy.ok","rid":null,"ms":212,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:36:20.384Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.521,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:36:20.385Z","event":"tenancy.ok","rid":null,"ms":270,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:37:19.578Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:37:19.596Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:37:19.611Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.2847,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:37:19.611Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:37:19.619Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.6171,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:37:19.620Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:37:19.646Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.463,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:37:19.647Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:37:19.656Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.2527,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:37:19.657Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:37:19.691Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:37:19.707Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:37:19.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:37:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:37:19.728Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.2658,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:37:19.729Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:37:19.736Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.5011,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:37:19.737Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:37:19.754Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.4085,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:37:19.755Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:37:19.756Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.2766,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:37:19.756Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:37:19.760Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.5764,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:37:19.761Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:37:19.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.1229,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:37:19.763Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:37:19.790Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8834,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:37:19.791Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:37:19.797Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.9257,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:37:19.799Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:37:19.808Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:37:19.811Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:37:19.832Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.248,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:37:19.833Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:37:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9842,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:37:19.835Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:37:19.846Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.7157,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:37:19.848Z","event":"tenancy.ok","rid":null,"ms":37,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:37:19.863Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:37:19.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6935,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:37:19.868Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:37:19.882Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.6742,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:37:19.883Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:37:19.899Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:37:19.907Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.0319,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:37:19.908Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:37:19.927Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:37:19.928Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:37:19.946Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.2904,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:37:19.947Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:38:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:38:19.606Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:38:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.4392,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:38:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:38:19.638Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.083,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:38:19.639Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:38:19.671Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.1398,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:38:19.673Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:38:19.684Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2859,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:38:19.686Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:38:19.705Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:38:19.727Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.2084,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:38:19.728Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:38:19.741Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:38:19.747Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.8135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:38:19.748Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:38:19.756Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:38:19.764Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:38:19.772Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.4228,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:38:19.773Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:38:19.774Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.1721,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:38:19.776Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:38:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:38:19.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:38:19.791Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.8736,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:38:19.792Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:38:19.950Z","event":"tenants.lookup.default.ok","rid":null,"ms":176.3409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:38:19.953Z","event":"tenancy.ok","rid":null,"ms":212,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:38:19.964Z","event":"tenants.lookup.exact.ok","rid":null,"ms":178.3785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:38:19.966Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:38:19.969Z","event":"tenants.lookup.default.ok","rid":null,"ms":176.7128,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:38:19.971Z","event":"tenancy.ok","rid":null,"ms":207,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:38:19.981Z","event":"tenants.lookup.default.ok","rid":null,"ms":204.2778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:38:19.984Z","event":"tenancy.ok","rid":null,"ms":228,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:38:19.993Z","event":"tenants.lookup.exact.ok","rid":null,"ms":209.9369,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:38:19.994Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:38:19.997Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.021,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:38:19.998Z","event":"tenancy.ok","rid":null,"ms":213,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:38:20.012Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.8702,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:38:20.013Z","event":"tenancy.ok","rid":null,"ms":231,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:38:20.078Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:38:20.086Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:38:20.261Z","event":"tenants.lookup.exact.ok","rid":null,"ms":173.9128,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:38:20.264Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:38:20.267Z","event":"tenants.lookup.exact.ok","rid":null,"ms":187.2497,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:38:20.268Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:38:20.304Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5609,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:38:20.305Z","event":"tenancy.ok","rid":null,"ms":219,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:38:20.314Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.1756,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:38:20.316Z","event":"tenancy.ok","rid":null,"ms":237,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:39:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:39:19.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:39:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.4559,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:39:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:39:19.654Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.27,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:39:19.655Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:39:19.673Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:39:19.675Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.2031,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:39:19.676Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:39:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.4713,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:39:19.690Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:39:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.7028,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:39:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:39:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:39:19.743Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:39:19.755Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:39:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.4558,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:39:19.758Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:39:19.765Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.337,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:39:19.766Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:39:19.780Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.8406,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:39:19.781Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:39:19.782Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.9894,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:39:19.783Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:39:19.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:39:19.789Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:39:19.793Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.1099,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:39:19.795Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:39:19.801Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.4672,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:39:19.802Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:39:19.811Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.2239,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:39:19.812Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:39:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6225,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:39:19.818Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:39:19.820Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.7419,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:39:19.821Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:39:19.843Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:39:19.855Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.1558,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:39:19.856Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:39:19.860Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.4925,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:39:19.861Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:39:19.871Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.695,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:39:19.872Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:39:19.891Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:39:19.898Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.6871,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:39:19.900Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:39:19.910Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.4785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:39:19.911Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:39:19.933Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.3122,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:39:19.934Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T17:40:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:40:19.611Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:40:19.650Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.3731,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:40:19.651Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:40:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:40:19.713Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:40:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:40:20.047Z","event":"tenants.lookup.default.ok","rid":null,"ms":395.7651,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:40:20.048Z","event":"tenancy.ok","rid":null,"ms":460,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:40:20.052Z","event":"tenants.lookup.exact.ok","rid":null,"ms":439.6889,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:40:20.052Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:40:20.054Z","event":"tenants.lookup.exact.ok","rid":null,"ms":336.3576,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:40:20.055Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:40:20.057Z","event":"tenants.lookup.exact.ok","rid":null,"ms":370.3887,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:40:20.058Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:40:20.060Z","event":"tenants.lookup.exact.ok","rid":null,"ms":284.6466,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:40:20.062Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:40:20.080Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.0366,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:40:20.082Z","event":"tenancy.ok","rid":null,"ms":471,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:40:20.091Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.2819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:40:20.092Z","event":"tenancy.ok","rid":null,"ms":318,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:40:20.102Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.6839,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:40:20.103Z","event":"tenancy.ok","rid":null,"ms":420,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:40:20.108Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.3971,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:40:20.109Z","event":"tenancy.ok","rid":null,"ms":396,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:40:20.124Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:40:20.145Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.0892,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:40:20.146Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:40:20.173Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:40:20.175Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.314,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:40:20.176Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:40:20.185Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:40:20.188Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:40:20.204Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:40:20.288Z","event":"tenants.lookup.exact.ok","rid":null,"ms":114.1178,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:40:20.289Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:40:20.633Z","event":"tenants.lookup.exact.ok","rid":null,"ms":443.4199,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:40:20.634Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:40:20.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":450.3795,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:40:20.637Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:40:20.639Z","event":"tenants.lookup.default.ok","rid":null,"ms":349.4015,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:40:20.640Z","event":"tenancy.ok","rid":null,"ms":467,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:40:20.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":442.5297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:40:20.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:40:20.673Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.2466,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:40:20.675Z","event":"tenancy.ok","rid":null,"ms":487,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:40:20.688Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.8709,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:40:20.690Z","event":"tenancy.ok","rid":null,"ms":505,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:40:20.700Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.2027,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:40:20.702Z","event":"tenancy.ok","rid":null,"ms":498,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:41:19.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:41:19.614Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:41:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.5351,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:41:19.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:41:19.654Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.9102,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:41:19.655Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:41:19.676Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:41:19.680Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.1819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:41:19.684Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:41:19.696Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.1485,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:41:19.698Z","event":"tenancy.ok","rid":null,"ms":118,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:41:19.710Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7992,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:41:19.711Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:41:19.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:41:19.741Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.4572,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:41:19.742Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:41:19.753Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:41:19.760Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:41:19.768Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.5861,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:41:19.769Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:41:19.773Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.3119,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:41:19.773Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:41:19.774Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.7283,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:41:19.775Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:41:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:41:19.787Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:41:19.799Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.1908,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:41:19.800Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:41:19.805Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:41:19.806Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:41:19.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7652,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:41:19.813Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:41:19.817Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.6471,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:41:19.818Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:41:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.8273,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:41:19.827Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:41:19.834Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.6195,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:41:19.835Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:41:19.853Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.4402,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:41:19.854Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:41:19.861Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:41:19.894Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:41:20.028Z","event":"tenants.lookup.exact.ok","rid":null,"ms":165.8622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:41:20.030Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:41:20.032Z","event":"tenants.lookup.exact.ok","rid":null,"ms":135.8881,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:41:20.033Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:41:20.053Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.546,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:41:20.053Z","event":"tenancy.ok","rid":null,"ms":192,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:41:20.058Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.7424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:41:20.059Z","event":"tenancy.ok","rid":null,"ms":165,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:42:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:42:19.611Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:42:19.633Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.4537,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:42:19.634Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:42:19.638Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9359,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:42:19.639Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:42:19.654Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.8322,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:42:19.655Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:42:19.661Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.9065,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:42:19.663Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:42:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:42:19.714Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.9097,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:42:19.716Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:42:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:42:19.736Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:42:19.747Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:42:19.754Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8837,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:42:19.756Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:42:19.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.5585,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:42:19.763Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:42:19.764Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8974,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:42:19.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:42:19.776Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:42:19.778Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.6379,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:42:19.779Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:42:19.780Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.5611,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:42:19.781Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:42:19.787Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.2976,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:42:19.788Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:42:19.797Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:42:19.814Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:42:19.815Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.3574,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:42:19.816Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:42:19.818Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.2986,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:42:19.819Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:42:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:42:19.826Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:42:19.857Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.078,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:42:19.858Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:42:19.859Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.3789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:42:19.859Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:42:19.863Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0244,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:42:19.863Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:42:19.897Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:42:19.902Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.5473,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:42:19.903Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:42:19.913Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.3681,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:42:19.914Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:42:19.939Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.7861,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:42:19.940Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:43:19.595Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:43:19.614Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.5067,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:43:19.616Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:43:19.622Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:43:19.655Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5043,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:43:19.656Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:43:19.663Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.6715,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:43:19.665Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:43:19.681Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:43:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:43:19.699Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3944,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:43:19.700Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:43:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:43:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:43:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.7302,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:43:19.734Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:43:19.735Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.5167,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:43:19.736Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:43:19.770Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:43:19.928Z","event":"tenants.lookup.default.ok","rid":null,"ms":191.5797,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:43:19.931Z","event":"tenancy.ok","rid":null,"ms":247,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:43:19.942Z","event":"tenants.lookup.exact.ok","rid":null,"ms":215.0814,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:43:19.943Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:43:19.946Z","event":"tenants.lookup.default.ok","rid":null,"ms":210.969,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:43:19.950Z","event":"tenancy.ok","rid":null,"ms":269,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:43:19.961Z","event":"tenants.lookup.exact.ok","rid":null,"ms":190.1251,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:43:19.964Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:43:19.968Z","event":"tenants.lookup.exact.ok","rid":null,"ms":253.4944,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:43:19.971Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:43:19.977Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:43:19.980Z","event":"tenancy.ok","rid":null,"ms":256,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:43:19.998Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.3561,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:43:20.000Z","event":"tenancy.ok","rid":null,"ms":230,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:43:20.011Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5097,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:43:20.012Z","event":"tenancy.ok","rid":null,"ms":298,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:43:20.095Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:43:20.114Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.8534,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:43:20.115Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:43:20.118Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:43:20.134Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:43:20.293Z","event":"tenants.lookup.default.ok","rid":null,"ms":177.0227,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:43:20.295Z","event":"tenancy.ok","rid":null,"ms":200,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:43:20.302Z","event":"tenants.lookup.exact.ok","rid":null,"ms":182.3902,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:43:20.303Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:43:20.305Z","event":"tenants.lookup.exact.ok","rid":null,"ms":170.4098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:43:20.308Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:43:20.338Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6855,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:43:20.340Z","event":"tenancy.ok","rid":null,"ms":222,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:43:20.348Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.4456,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:43:20.350Z","event":"tenancy.ok","rid":null,"ms":216,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:44:19.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:44:19.608Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:44:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.3208,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:44:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:44:19.647Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.4072,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:44:19.648Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:44:19.675Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4984,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:44:19.676Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:44:19.684Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:44:19.686Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:44:19.707Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:44:19.735Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6494,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:44:19.736Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:44:19.741Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:44:19.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.8143,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:44:19.757Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:44:19.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.4616,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:44:19.762Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:44:19.771Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:44:19.777Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:44:19.792Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:44:19.795Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.8149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:44:19.796Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:44:19.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.4346,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:44:19.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:44:19.803Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.4266,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:44:19.804Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:44:19.815Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.5199,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:44:19.816Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:44:19.820Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:44:19.821Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.3124,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:44:19.822Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:44:19.831Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.2355,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:44:19.832Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:44:19.843Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:44:19.855Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.2374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:44:19.856Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:44:19.861Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.6842,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:44:19.862Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:44:19.863Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.8877,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:44:19.863Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:44:19.886Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:44:19.896Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0578,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:44:19.897Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:44:19.904Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.5506,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:44:19.905Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:44:19.914Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:44:19.915Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:44:19.960Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.4438,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:44:19.960Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T17:45:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:45:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:45:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:45:19.717Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:45:19.776Z","event":"tenants.lookup.exact.ok","rid":null,"ms":178.0651,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:45:19.778Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:45:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:45:19.789Z","event":"tenants.lookup.exact.ok","rid":null,"ms":102.4948,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:45:19.791Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:45:19.794Z","event":"tenants.lookup.exact.ok","rid":null,"ms":179.8488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:45:19.795Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:45:19.796Z","event":"tenants.lookup.exact.ok","rid":null,"ms":74.2178,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:45:19.797Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:45:19.815Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.2527,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:45:19.815Z","event":"tenancy.ok","rid":null,"ms":231,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:45:19.821Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.2462,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:45:19.822Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:45:19.824Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.7235,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:45:19.825Z","event":"tenancy.ok","rid":null,"ms":108,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:45:19.832Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.3093,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:45:19.834Z","event":"tenancy.ok","rid":null,"ms":222,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:45:19.842Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.2818,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:45:19.844Z","event":"tenancy.ok","rid":null,"ms":160,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:45:19.856Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2918,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:45:19.858Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:45:19.883Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:45:19.915Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:45:19.916Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:45:19.921Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:45:19.925Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:45:19.929Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:45:19.950Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:45:19.952Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1201,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:45:19.955Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:45:19.963Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.3172,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:45:19.964Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:45:19.965Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.3119,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:45:19.967Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:45:19.968Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.274,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:45:19.970Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:45:20.133Z","event":"tenants.lookup.exact.ok","rid":null,"ms":181.7143,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:45:20.136Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:45:20.139Z","event":"tenants.lookup.default.ok","rid":null,"ms":171.3106,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:45:20.142Z","event":"tenancy.ok","rid":null,"ms":213,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:45:20.150Z","event":"tenants.lookup.default.ok","rid":null,"ms":185.3667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:45:20.152Z","event":"tenancy.ok","rid":null,"ms":227,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:45:20.170Z","event":"tenants.lookup.default.ok","rid":null,"ms":199.0039,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:45:20.174Z","event":"tenancy.ok","rid":null,"ms":254,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:45:20.185Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.5287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:45:20.188Z","event":"tenancy.ok","rid":null,"ms":238,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:46:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:46:19.608Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:46:19.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.3951,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:46:19.629Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:46:19.634Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.0239,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:46:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:46:19.661Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.1116,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:46:19.662Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:46:19.667Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.565,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:46:19.668Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:46:19.677Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:46:19.694Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:46:19.697Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.5118,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:46:19.698Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:46:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:46:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:46:19.724Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.4999,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:46:19.725Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:46:19.726Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.9416,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:46:19.727Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:46:19.733Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.3559,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:46:19.734Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:46:19.744Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:46:19.745Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.9279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:46:19.746Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:46:19.747Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.8709,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:46:19.749Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:46:19.756Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.8493,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:46:19.757Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:46:19.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.0269,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:46:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:46:19.766Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.056,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:46:19.768Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:46:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:46:19.793Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:46:19.796Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.306,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:46:19.798Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:46:19.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.8941,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:46:19.812Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:46:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.2029,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:46:19.814Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:46:19.836Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.1059,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:46:19.837Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:46:19.843Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.8286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:46:19.843Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:46:19.860Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:46:19.885Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.3687,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:46:19.886Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:46:19.911Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.0169,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:46:19.912Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:47:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:47:19.615Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:47:19.642Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.7801,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:47:19.643Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:47:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5915,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:47:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:47:19.672Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:47:19.677Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0118,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:47:19.678Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:47:19.685Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.4753,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:47:19.686Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:47:19.701Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7066,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:47:19.703Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:47:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:47:19.724Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.1347,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:47:19.726Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:47:19.741Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:47:19.751Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:47:19.757Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.3413,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:47:19.768Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:47:19.770Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.2994,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:47:19.771Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:47:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:47:19.776Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.5638,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:47:19.777Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:47:19.787Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:47:19.792Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.6025,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:47:19.793Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:47:19.798Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.511,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:47:19.799Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:47:19.804Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.2677,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:47:19.804Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:47:19.806Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:47:19.807Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:47:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.1909,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:47:19.814Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:47:19.821Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:47:19.831Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.4986,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:47:19.832Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:47:19.837Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.8715,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:47:19.837Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:47:19.851Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3818,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:47:19.852Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:47:19.860Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:47:19.871Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.6447,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:47:19.872Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:47:19.875Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.4438,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:47:19.876Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:47:19.898Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.96,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:47:19.899Z","event":"tenancy.ok","rid":null,"ms":39,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:48:19.604Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:48:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:48:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.324,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:48:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:48:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.2699,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:48:19.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:48:19.675Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:48:19.678Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.3335,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:48:19.680Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:48:19.690Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.9607,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:48:19.691Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:48:19.718Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:48:19.722Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.1262,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:48:19.723Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:48:19.745Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:48:19.755Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:48:19.757Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.7736,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:48:19.758Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:48:19.760Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.961,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:48:19.761Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:48:19.781Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:48:19.783Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.6749,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:48:19.784Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:48:19.788Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.4096,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:48:19.789Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:48:19.790Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.6814,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:48:19.791Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:48:19.793Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:48:19.807Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:48:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.0156,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:48:19.818Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:48:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.9738,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:48:19.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:48:19.820Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7023,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:48:19.821Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:48:19.822Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5623,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:48:19.823Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:48:19.836Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.4651,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:48:19.837Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:48:19.841Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.4931,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:48:19.842Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:48:19.847Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.2601,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:48:19.848Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:48:19.871Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:48:19.877Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.4224,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:48:19.879Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:48:19.899Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:48:19.900Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:48:19.939Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.8027,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:48:19.939Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:49:19.585Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:49:19.618Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:49:19.637Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.8366,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:49:19.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:49:19.640Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.7152,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:49:19.641Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:49:19.667Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:49:19.671Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5572,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:49:19.672Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:49:19.677Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.7209,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:49:19.678Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:49:19.692Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.7003,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:49:19.693Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:49:19.700Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:49:19.703Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:49:19.711Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.7468,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:49:19.712Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:49:19.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.9129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:49:19.719Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:49:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:49:19.724Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.9785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:49:19.725Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:49:19.735Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:49:19.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.6148,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:49:19.763Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:49:19.764Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.5262,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:49:19.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:49:19.765Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.3573,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:49:19.766Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:49:19.770Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.303,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:49:19.771Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:49:19.778Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:49:19.798Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6171,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:49:19.799Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:49:19.804Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.1363,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:49:19.805Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:49:19.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.2041,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:49:19.812Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:49:19.834Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:49:19.836Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.8413,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:49:19.837Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:49:19.852Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.6005,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:49:19.853Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:49:19.871Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:49:19.873Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.6297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:49:19.875Z","event":"tenancy.ok","rid":null,"ms":41,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:49:19.897Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9651,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:49:19.898Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:49:19.931Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:49:19.932Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T17:50:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:50:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:50:19.675Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:50:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:50:19.778Z","event":"tenants.lookup.exact.ok","rid":null,"ms":174.2517,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:50:19.780Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:50:19.782Z","event":"tenants.lookup.exact.ok","rid":null,"ms":170.3309,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:50:19.784Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:50:19.786Z","event":"tenants.lookup.exact.ok","rid":null,"ms":108.0594,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:50:19.787Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:50:19.789Z","event":"tenants.lookup.exact.ok","rid":null,"ms":80.9583,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:50:19.790Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:50:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.6985,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:50:19.796Z","event":"tenancy.ok","rid":null,"ms":209,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:50:19.813Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:50:19.816Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.4538,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:50:19.818Z","event":"tenancy.ok","rid":null,"ms":143,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:50:19.829Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.4848,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:50:19.831Z","event":"tenancy.ok","rid":null,"ms":221,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:50:19.839Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.0358,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:50:19.840Z","event":"tenancy.ok","rid":null,"ms":134,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:50:19.848Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1111,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:50:19.849Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:50:19.872Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.6723,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:50:19.874Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:50:19.883Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:50:19.891Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:50:19.896Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:50:19.901Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:50:19.919Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.8122,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:50:19.920Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:50:19.923Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:50:20.087Z","event":"tenants.lookup.exact.ok","rid":null,"ms":194.7996,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:50:20.089Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:50:20.091Z","event":"tenants.lookup.exact.ok","rid":null,"ms":193.8893,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:50:20.092Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:50:20.094Z","event":"tenants.lookup.exact.ok","rid":null,"ms":192.7916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:50:20.095Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:50:20.097Z","event":"tenants.lookup.default.ok","rid":null,"ms":176.492,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:50:20.099Z","event":"tenancy.ok","rid":null,"ms":216,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:50:20.109Z","event":"tenants.lookup.exact.ok","rid":null,"ms":184.7506,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:50:20.111Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:50:20.113Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.5675,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:50:20.115Z","event":"tenancy.ok","rid":null,"ms":224,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:50:20.131Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.132,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:50:20.132Z","event":"tenancy.ok","rid":null,"ms":236,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:50:20.145Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.5171,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:50:20.147Z","event":"tenancy.ok","rid":null,"ms":247,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:50:20.158Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.7161,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:50:20.160Z","event":"tenancy.ok","rid":null,"ms":237,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:51:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:51:19.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:51:19.646Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.5154,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:51:19.647Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:51:19.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.7583,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:51:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:51:19.674Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:51:19.690Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.3838,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:51:19.691Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:51:19.696Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.1796,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:51:19.697Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:51:19.721Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.9311,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:51:19.722Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:51:19.734Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:51:19.755Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:51:19.763Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2114,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:51:19.764Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:51:19.765Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.1032,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:51:19.766Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:51:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:51:19.775Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.7174,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:51:19.776Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:51:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:51:19.791Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:51:19.793Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.043,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:51:19.794Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:51:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.8075,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:51:19.801Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:51:19.808Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:51:19.809Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:51:19.810Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.6066,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:51:19.811Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:51:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.5965,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:51:19.815Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:51:19.824Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:51:19.828Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.8319,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:51:19.829Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:51:19.834Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.1564,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:51:19.836Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:51:19.842Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.4963,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:51:19.843Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:51:19.853Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4598,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:51:19.855Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:51:19.861Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:51:19.877Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.4078,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:51:19.878Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:51:19.879Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.1364,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:51:19.881Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:51:19.913Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.9689,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:51:19.914Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:52:19.596Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:52:19.655Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:52:19.679Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:52:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:52:19.729Z","event":"tenants.lookup.exact.ok","rid":null,"ms":118.646,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:52:19.730Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:52:19.731Z","event":"tenants.lookup.exact.ok","rid":null,"ms":74.6669,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:52:19.732Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:52:19.733Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.7708,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:52:19.733Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:52:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:52:19.735Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:52:19.761Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.5182,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:52:19.763Z","event":"tenancy.ok","rid":null,"ms":167,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:52:19.773Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.8381,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:52:19.775Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:52:19.786Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.7998,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:52:19.788Z","event":"tenancy.ok","rid":null,"ms":109,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:52:19.799Z","event":"tenants.lookup.default.ok","rid":null,"ms":66.9056,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:52:19.802Z","event":"tenancy.ok","rid":null,"ms":147,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:52:19.819Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:52:19.858Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.0301,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:52:19.859Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:52:19.871Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:52:19.877Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:52:19.881Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:52:19.885Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:52:19.999Z","event":"tenants.lookup.exact.ok","rid":null,"ms":125.032,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:52:20.002Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:52:20.004Z","event":"tenants.lookup.default.ok","rid":null,"ms":144.232,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:52:20.006Z","event":"tenancy.ok","rid":null,"ms":187,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:52:20.019Z","event":"tenants.lookup.exact.ok","rid":null,"ms":136.7703,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:52:20.022Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:52:20.025Z","event":"tenants.lookup.exact.ok","rid":null,"ms":146.8723,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:52:20.027Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:52:20.029Z","event":"tenants.lookup.exact.ok","rid":null,"ms":143.4831,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:52:20.031Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:52:20.035Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.8449,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:52:20.037Z","event":"tenancy.ok","rid":null,"ms":166,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:52:20.064Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.7695,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:52:20.065Z","event":"tenancy.ok","rid":null,"ms":188,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:52:20.075Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.288,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:52:20.078Z","event":"tenancy.ok","rid":null,"ms":193,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:52:20.086Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.51,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:52:20.087Z","event":"tenancy.ok","rid":null,"ms":206,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:52:20.114Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:52:20.134Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.6316,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:52:20.135Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:52:20.297Z","event":"tenants.lookup.default.ok","rid":null,"ms":160.7871,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:52:20.299Z","event":"tenancy.ok","rid":null,"ms":185,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:53:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:53:19.615Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:53:19.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.9553,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:53:19.639Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:53:19.640Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.2604,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:53:19.640Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:53:19.664Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.3889,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:53:19.666Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:53:19.672Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:53:19.674Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:53:19.685Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:53:19.699Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.6347,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:53:19.701Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:53:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:53:19.729Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:53:19.737Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:53:19.739Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.6521,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:53:19.740Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:53:19.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.0703,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:53:19.750Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:53:19.754Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2171,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:53:19.755Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:53:19.767Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:53:19.776Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.737,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:53:19.777Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:53:19.779Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.5566,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:53:19.780Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:53:19.789Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.1806,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:53:19.790Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:53:19.796Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:53:19.804Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.0023,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:53:19.804Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:53:19.809Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:53:19.813Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1226,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:53:19.814Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:53:19.823Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8355,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:53:19.824Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:53:19.826Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.5204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:53:19.826Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:53:19.835Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.3163,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:53:19.836Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:53:19.845Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.8033,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:53:19.846Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:53:19.855Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.176,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:53:19.856Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:53:19.872Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:53:19.894Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.9764,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:53:19.895Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:53:19.913Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.837,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:53:19.914Z","event":"tenancy.ok","rid":null,"ms":42,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:54:19.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:54:19.597Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:54:19.673Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:54:19.699Z","event":"tenants.lookup.exact.ok","rid":null,"ms":105.2136,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:54:19.700Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:54:19.708Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1144,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:54:19.709Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:54:19.717Z","event":"tenants.lookup.exact.ok","rid":null,"ms":118.978,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:54:19.719Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:54:19.725Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:54:19.731Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.7718,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:54:19.732Z","event":"tenancy.ok","rid":null,"ms":152,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:54:19.740Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.7971,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:54:19.742Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:54:19.754Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.1124,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:54:19.755Z","event":"tenancy.ok","rid":null,"ms":158,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:54:19.764Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.6075,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:54:19.767Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:54:19.800Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:54:19.808Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.0194,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:54:19.810Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:54:19.821Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:54:19.828Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:54:19.833Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:54:19.848Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.0963,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:54:19.851Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:54:19.855Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:54:19.893Z","event":"tenants.lookup.exact.ok","rid":null,"ms":70.4415,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:54:19.894Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:54:20.019Z","event":"tenants.lookup.default.ok","rid":null,"ms":167.3249,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:54:20.022Z","event":"tenancy.ok","rid":null,"ms":222,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:54:20.031Z","event":"tenants.lookup.exact.ok","rid":null,"ms":202.149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:54:20.035Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:54:20.038Z","event":"tenants.lookup.exact.ok","rid":null,"ms":181.6377,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:54:20.040Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:54:20.042Z","event":"tenants.lookup.exact.ok","rid":null,"ms":208.1961,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:54:20.044Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:54:20.047Z","event":"tenants.lookup.default.ok","rid":null,"ms":152.8702,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:54:20.049Z","event":"tenancy.ok","rid":null,"ms":228,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:54:20.059Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.53,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:54:20.061Z","event":"tenancy.ok","rid":null,"ms":206,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:54:20.070Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.3973,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:54:20.072Z","event":"tenancy.ok","rid":null,"ms":239,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:54:20.079Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.0226,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:54:20.080Z","event":"tenancy.ok","rid":null,"ms":252,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:54:20.142Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:54:20.325Z","event":"tenants.lookup.exact.ok","rid":null,"ms":182.3609,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:54:20.327Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:54:20.355Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.4123,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:54:20.356Z","event":"tenancy.ok","rid":null,"ms":214,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T17:55:19.595Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:55:19.614Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:55:19.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.3605,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:55:19.640Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:55:19.647Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.3917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:55:19.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:55:19.674Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:55:19.677Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.3322,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:55:19.679Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:55:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.214,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:55:19.687Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:55:19.696Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.9182,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:55:19.699Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:55:19.712Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:55:19.726Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.1671,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:55:19.728Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:55:19.735Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.2508,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:55:19.736Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:55:19.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:55:19.744Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:55:19.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0648,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:55:19.760Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:55:19.771Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2241,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:55:19.772Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:55:19.775Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:55:19.777Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.983,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:55:19.778Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:55:19.793Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:55:19.799Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.5981,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:55:19.800Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:55:19.802Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.5982,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:55:19.803Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:55:19.807Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.8187,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:55:19.808Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:55:19.815Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:55:19.818Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.7804,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:55:19.819Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:55:19.821Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.0217,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:55:19.822Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:55:19.839Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.237,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:55:19.840Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:55:19.846Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.6766,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:55:19.849Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:55:19.865Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:55:19.874Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.6959,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:55:19.875Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:55:19.896Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0742,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:55:19.897Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:55:19.917Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9131,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:55:19.918Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:56:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:56:19.601Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:56:19.634Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.94,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:56:19.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:56:19.645Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.3927,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:56:19.646Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:56:19.674Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:56:19.677Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.7949,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:56:19.680Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:56:19.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.8612,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:56:19.692Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:56:19.725Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:56:19.742Z","event":"tenants.lookup.exact.ok","rid":null,"ms":66.4539,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:56:19.743Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:56:19.754Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:56:19.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:56:19.776Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.183,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:56:19.778Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:56:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:56:19.785Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.8116,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:56:19.786Z","event":"tenancy.ok","rid":null,"ms":112,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:56:19.804Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.4402,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:56:19.804Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:56:19.806Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.5272,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:56:19.806Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:56:19.808Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.559,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:56:19.809Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:56:19.820Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.553,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:56:19.821Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:56:19.823Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:56:19.826Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.3897,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:56:19.829Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:56:19.843Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.4618,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:56:19.845Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:56:19.863Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:56:19.883Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.3202,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:56:19.884Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:56:19.886Z","event":"tenants.lookup.exact.ok","rid":null,"ms":61.5209,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:56:19.886Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:56:19.891Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.6187,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:56:19.893Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:56:19.900Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:56:19.939Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.6703,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:56:19.940Z","event":"tenancy.ok","rid":null,"ms":117,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:56:19.949Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.5744,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:56:19.949Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:56:19.951Z","event":"tenants.lookup.default.ok","rid":null,"ms":56.2435,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:56:19.952Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:56:19.983Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2796,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:56:19.984Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:57:19.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:57:19.603Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:57:19.626Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4038,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:57:19.627Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:57:19.647Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.6263,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:57:19.648Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:57:19.649Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.3248,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:57:19.650Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:57:19.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.0119,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:57:19.694Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:57:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:57:19.710Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:57:19.732Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:57:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8786,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:57:19.735Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:57:19.737Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.2714,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:57:19.738Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:57:19.747Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:57:19.757Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2006,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:57:19.759Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:57:19.760Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.9767,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:57:19.761Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:57:19.767Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.2303,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:57:19.768Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:57:19.771Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.4646,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:57:19.772Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:57:19.775Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:57:19.778Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.7688,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:57:19.779Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:57:19.801Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:57:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6047,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:57:19.804Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:57:19.814Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.2234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:57:19.816Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:57:19.821Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:57:19.823Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.0498,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:57:19.824Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:57:19.835Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.4598,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:57:19.836Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:57:19.841Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.8906,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:57:19.843Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:57:19.845Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.2349,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:57:19.846Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:57:19.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.6961,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:57:19.868Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:57:19.887Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:57:19.915Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.415,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:57:19.916Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:57:19.936Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.0302,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:57:19.937Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:58:19.577Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:58:19.616Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:58:19.630Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.192,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:58:19.631Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:58:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.7433,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:58:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:58:19.664Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.0271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:58:19.664Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:58:19.668Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8296,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:58:19.668Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:58:19.683Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:58:19.692Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:58:19.697Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:58:19.703Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.7238,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:58:19.704Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:58:19.717Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:58:19.723Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.9445,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:58:19.725Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:58:19.727Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.1962,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:58:19.728Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:58:19.729Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.8437,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:58:19.730Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:58:19.736Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.3192,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:58:19.736Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:58:19.748Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:58:19.756Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4377,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:58:19.758Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:58:19.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3295,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:58:19.762Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:58:19.765Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.5636,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:58:19.766Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:58:19.767Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.9367,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:58:19.768Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:58:19.784Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:58:19.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.9063,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:58:19.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:58:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.5583,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:58:19.804Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:58:19.812Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:58:19.822Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.5465,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:58:19.824Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:58:19.837Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.8753,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:58:19.838Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:58:19.841Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:58:19.859Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.8231,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:58:19.861Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:58:19.867Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.3214,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:58:19.868Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:58:19.897Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.4568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:58:19.898Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:59:19.583Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:59:19.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:59:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.9167,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:59:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:59:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.8602,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:59:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:59:19.672Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:59:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.5687,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:59:19.687Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:59:19.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.8287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:59:19.691Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:59:19.699Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.8799,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:59:19.700Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:59:19.729Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:59:19.742Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.8273,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:59:19.743Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:59:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:59:19.788Z","event":"tenants.lookup.exact.ok","rid":null,"ms":58.0929,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:59:19.790Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:59:19.803Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:59:19.809Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:59:19.819Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:59:19.828Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.1456,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:59:19.829Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:59:19.833Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.5979,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:59:19.834Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:59:19.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.0402,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:59:19.836Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:59:19.838Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.8729,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:59:19.839Z","event":"tenancy.ok","rid":null,"ms":109,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:59:19.844Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.4032,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:59:19.845Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:59:19.857Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.8645,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:59:19.860Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:59:19.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1896,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:59:19.867Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:59:19.878Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7116,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:59:19.880Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:59:19.887Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.6703,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:59:19.889Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:59:19.897Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:59:19.916Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.653,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:59:19.918Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:59:19.934Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T17:59:19.939Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.5775,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:59:19.941Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T17:59:19.961Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.8213,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T17:59:19.962Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T17:59:19.987Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.621,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T17:59:19.988Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T18:00:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:00:19.604Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:00:19.619Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.0772,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:00:19.621Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:00:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.3336,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:00:19.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:00:19.639Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.5972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:00:19.641Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:00:19.645Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.5686,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:00:19.646Z","event":"tenancy.ok","rid":null,"ms":42,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:00:19.690Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:00:19.707Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:00:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:00:19.719Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:00:19.729Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.7972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:00:19.730Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:00:19.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.2483,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:00:19.751Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:00:19.752Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:00:19.752Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:00:19.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.9551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:00:19.756Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:00:19.761Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.1895,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:00:19.762Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:00:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:00:19.796Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:00:19.806Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.7792,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:00:19.807Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:00:19.811Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.4065,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:00:19.812Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:00:19.816Z","event":"tenants.lookup.default.ok","rid":null,"ms":64.7292,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:00:19.817Z","event":"tenancy.ok","rid":null,"ms":110,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:00:19.830Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.1067,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:00:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:00:19.833Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.0238,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:00:19.834Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:00:19.856Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:00:19.869Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.774,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:00:19.870Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:00:19.873Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.2317,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:00:19.874Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:00:19.888Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.462,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:00:19.889Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:00:19.897Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:00:19.921Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4631,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:00:19.922Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:00:19.926Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.5512,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:00:19.926Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:00:19.968Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.081,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:00:19.969Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:01:19.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:01:19.604Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:01:19.616Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.7815,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:01:19.616Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:01:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.4251,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:01:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:01:19.645Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.9204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:01:19.646Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:01:19.658Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.7223,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:01:19.660Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:01:19.697Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:01:19.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:01:19.717Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:01:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.6166,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:01:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:01:19.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:01:19.776Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:01:19.909Z","event":"tenants.lookup.exact.ok","rid":null,"ms":197.1224,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:01:19.911Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:01:19.914Z","event":"tenants.lookup.exact.ok","rid":null,"ms":195.2564,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:01:19.915Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:01:19.917Z","event":"tenants.lookup.default.ok","rid":null,"ms":195.5651,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:01:19.919Z","event":"tenancy.ok","rid":null,"ms":222,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:01:19.931Z","event":"tenants.lookup.exact.ok","rid":null,"ms":207.25,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:01:19.935Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:01:19.939Z","event":"tenants.lookup.exact.ok","rid":null,"ms":160.853,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:01:19.940Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:01:19.946Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6485,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:01:19.948Z","event":"tenancy.ok","rid":null,"ms":237,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:01:19.961Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.0971,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:01:19.964Z","event":"tenancy.ok","rid":null,"ms":247,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:01:19.975Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.0363,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:01:19.978Z","event":"tenancy.ok","rid":null,"ms":255,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:01:19.987Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.5556,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:01:19.989Z","event":"tenancy.ok","rid":null,"ms":212,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:01:20.065Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:01:20.079Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:01:20.115Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:01:20.250Z","event":"tenants.lookup.exact.ok","rid":null,"ms":183.6957,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:01:20.253Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:01:20.255Z","event":"tenants.lookup.exact.ok","rid":null,"ms":174.3885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:01:20.256Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:01:20.258Z","event":"tenants.lookup.exact.ok","rid":null,"ms":142.3836,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:01:20.260Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:01:20.283Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.9347,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:01:20.285Z","event":"tenancy.ok","rid":null,"ms":220,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:01:20.289Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.037,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:01:20.290Z","event":"tenancy.ok","rid":null,"ms":211,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:01:20.297Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.4967,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:01:20.299Z","event":"tenancy.ok","rid":null,"ms":183,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:02:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:02:19.621Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:02:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.1889,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:02:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:02:19.647Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1235,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:02:19.648Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:02:19.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:02:19.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.1477,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:02:19.692Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:02:19.700Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.1014,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:02:19.702Z","event":"tenancy.ok","rid":null,"ms":115,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:02:19.717Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.4108,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:02:19.719Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:02:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:02:19.741Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:02:19.743Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.0446,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:02:19.744Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:02:19.746Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:02:19.747Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:02:19.757Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:02:19.763Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:02:19.765Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:02:19.772Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.4587,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:02:19.773Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:02:19.784Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:02:19.786Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.5173,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:02:19.787Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:02:19.789Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:02:19.796Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:02:19.805Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:02:19.806Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:02:19.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.1454,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:02:19.812Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:02:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.4968,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:02:19.814Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:02:19.815Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.2364,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:02:19.817Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:02:19.829Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8042,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:02:19.830Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:02:19.843Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8499,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:02:19.845Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:02:19.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.1821,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:02:19.853Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:02:19.861Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.5846,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:02:19.863Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:02:19.896Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:02:19.917Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.5836,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:02:19.918Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:02:19.938Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.834,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:02:19.939Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:03:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:03:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:03:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.4275,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:03:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:03:19.647Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.0625,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:03:19.648Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:03:19.674Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:03:19.685Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.3345,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:03:19.685Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:03:19.688Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.1638,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:03:19.689Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:03:19.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:03:19.745Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:03:19.767Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:03:19.771Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:03:19.829Z","event":"tenants.lookup.exact.ok","rid":null,"ms":152.888,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:03:19.830Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:03:19.831Z","event":"tenants.lookup.exact.ok","rid":null,"ms":58.5576,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:03:19.832Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:03:19.833Z","event":"tenants.lookup.exact.ok","rid":null,"ms":108.1056,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:03:19.833Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:03:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":86.9215,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:03:19.834Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:03:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":66.4015,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:03:19.835Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:03:19.865Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.7873,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:03:19.867Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:03:19.873Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.7197,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:03:19.875Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:03:19.884Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.1612,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:03:19.887Z","event":"tenancy.ok","rid":null,"ms":142,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:03:19.899Z","event":"tenants.lookup.default.ok","rid":null,"ms":68.3209,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:03:19.902Z","event":"tenancy.ok","rid":null,"ms":228,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:03:19.915Z","event":"tenants.lookup.default.ok","rid":null,"ms":81.88,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:03:19.918Z","event":"tenancy.ok","rid":null,"ms":195,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:03:19.973Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:03:19.977Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:03:19.989Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:03:20.129Z","event":"tenants.lookup.exact.ok","rid":null,"ms":150.424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:03:20.131Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:03:20.132Z","event":"tenants.lookup.exact.ok","rid":null,"ms":157.4615,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:03:20.132Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:03:20.133Z","event":"tenants.lookup.exact.ok","rid":null,"ms":142.5765,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:03:20.133Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:03:20.160Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.7312,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:03:20.162Z","event":"tenancy.ok","rid":null,"ms":188,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:03:20.167Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.6845,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:03:20.168Z","event":"tenancy.ok","rid":null,"ms":191,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:03:20.176Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.7409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:03:20.178Z","event":"tenancy.ok","rid":null,"ms":189,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:04:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:04:19.616Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:04:19.630Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.6331,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:04:19.632Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:04:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.0477,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:04:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:04:19.653Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.3446,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:04:19.654Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:04:19.682Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.7381,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:04:19.683Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:04:19.695Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:04:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:04:19.710Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:04:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:04:19.736Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.8545,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:04:19.737Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:04:19.738Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7575,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:04:19.738Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:04:19.739Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.1777,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:04:19.740Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:04:19.741Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.7144,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:04:19.741Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:04:19.766Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.9424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:04:19.767Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:04:19.770Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.8065,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:04:19.770Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:04:19.778Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.7648,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:04:19.779Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:04:19.786Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.1726,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:04:19.787Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:04:19.800Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:04:19.822Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.5082,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:04:19.823Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:04:19.841Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:04:19.844Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.3028,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:04:19.845Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:04:19.853Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:04:19.859Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.5452,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:04:19.860Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:04:19.882Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:04:19.884Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5375,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:04:19.885Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:04:19.886Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.8123,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:04:19.886Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:04:19.899Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.1214,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:04:19.900Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:04:19.904Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.3176,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:04:19.905Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:04:19.930Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.8752,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:04:19.932Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T18:05:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:05:19.614Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:05:19.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.9223,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:05:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:05:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.999,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:05:19.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:05:19.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:05:19.687Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.7622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:05:19.689Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:05:19.698Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.4298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:05:19.699Z","event":"tenancy.ok","rid":null,"ms":109,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:05:19.711Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7093,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:05:19.712Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:05:19.737Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:05:19.739Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.2701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:05:19.741Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:05:19.755Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:05:19.759Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.8844,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:05:19.761Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:05:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:05:19.783Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:05:19.787Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:05:19.791Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.6214,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:05:19.793Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:05:19.799Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.618,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:05:19.800Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:05:19.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.1276,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:05:19.801Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:05:19.804Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.5054,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:05:19.805Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:05:19.808Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.3833,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:05:19.809Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:05:19.818Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:05:19.824Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.8207,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:05:19.826Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:05:19.833Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.3467,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:05:19.834Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:05:19.842Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.6914,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:05:19.844Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:05:19.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.7872,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:05:19.852Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:05:19.859Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.6638,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:05:19.860Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:05:19.882Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:05:19.902Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.6499,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:05:19.902Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:05:19.908Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:05:19.910Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:05:19.942Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:05:19.942Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:06:19.586Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:06:19.615Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:06:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:06:19.728Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:06:19.781Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:06:19.792Z","event":"tenants.lookup.exact.ok","rid":null,"ms":176.6316,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:06:19.793Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:06:19.794Z","event":"tenants.lookup.exact.ok","rid":null,"ms":181.2541,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:06:19.794Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:06:19.828Z","event":"tenants.lookup.exact.ok","rid":null,"ms":140.3998,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:06:19.830Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:06:19.868Z","event":"tenants.lookup.exact.ok","rid":null,"ms":137.9142,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:06:19.870Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:06:19.882Z","event":"tenants.lookup.default.ok","rid":null,"ms":88.5476,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:06:19.884Z","event":"tenancy.ok","rid":null,"ms":269,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:06:19.892Z","event":"tenants.lookup.exact.ok","rid":null,"ms":109.5263,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:06:19.893Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:06:19.896Z","event":"tenants.lookup.default.ok","rid":null,"ms":101.1144,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:06:19.899Z","event":"tenancy.ok","rid":null,"ms":313,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:06:19.914Z","event":"tenants.lookup.default.ok","rid":null,"ms":83.3529,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:06:19.916Z","event":"tenancy.ok","rid":null,"ms":231,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:06:19.930Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.4073,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:06:19.931Z","event":"tenancy.ok","rid":null,"ms":203,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:06:19.943Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.9778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:06:19.944Z","event":"tenancy.ok","rid":null,"ms":163,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:06:19.974Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:06:20.010Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.9925,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:06:20.011Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:06:20.018Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:06:20.034Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:06:20.048Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:06:20.063Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:06:20.074Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.3041,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:06:20.075Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:06:20.080Z","event":"tenants.lookup.exact.ok","rid":null,"ms":60.3783,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:06:20.080Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:06:20.081Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.036,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:06:20.082Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:06:20.098Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.522,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:06:20.099Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:06:20.207Z","event":"tenants.lookup.exact.ok","rid":null,"ms":143.3487,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:06:20.209Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:06:20.217Z","event":"tenants.lookup.default.ok","rid":null,"ms":136.2186,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:06:20.219Z","event":"tenancy.ok","rid":null,"ms":201,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:06:20.227Z","event":"tenants.lookup.default.ok","rid":null,"ms":145.0358,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:06:20.229Z","event":"tenancy.ok","rid":null,"ms":195,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:06:20.247Z","event":"tenants.lookup.default.ok","rid":null,"ms":147.0058,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:06:20.249Z","event":"tenancy.ok","rid":null,"ms":201,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:06:20.336Z","event":"tenants.lookup.default.ok","rid":null,"ms":125.9994,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:06:20.338Z","event":"tenancy.ok","rid":null,"ms":275,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:07:19.586Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:07:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:07:19.623Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.9474,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:07:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:07:19.645Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.3762,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:07:19.646Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:07:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.2254,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:07:19.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:07:19.676Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:07:19.680Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:07:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:07:19.690Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:07:19.705Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.3796,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:07:19.706Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:07:19.707Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.2635,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:07:19.709Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:07:19.715Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:07:19.718Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:07:19.732Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.069,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:07:19.733Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:07:19.742Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.309,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:07:19.743Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:07:19.757Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.532,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:07:19.758Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:07:19.759Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.49,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:07:19.761Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:07:19.763Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:07:19.779Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:07:19.786Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.9815,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:07:19.787Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:07:19.791Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:07:19.791Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:07:19.792Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0505,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:07:19.792Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:07:19.805Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.5251,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:07:19.808Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:07:19.814Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:07:19.818Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.2778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:07:19.819Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:07:19.845Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.082,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:07:19.846Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:07:19.849Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.571,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:07:19.850Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:07:19.863Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:07:19.887Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4848,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:07:19.888Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:07:19.890Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5909,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:07:19.890Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:07:19.934Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.527,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:07:19.935Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:08:19.573Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:08:19.607Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:08:19.612Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:08:19.613Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:08:19.646Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.2698,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:08:19.647Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:08:19.653Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:08:19.654Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:08:19.680Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:08:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:08:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.8287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:08:19.690Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:08:19.706Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.1091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:08:19.707Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:08:19.708Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.5488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:08:19.708Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:08:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:08:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:08:19.745Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.4523,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:08:19.745Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:08:19.755Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.2667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:08:19.756Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:08:19.760Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.7526,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:08:19.760Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:08:19.761Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.9085,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:08:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:08:19.770Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:08:19.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:08:19.788Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.7939,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:08:19.789Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:08:19.790Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.807,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:08:19.791Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:08:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9065,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:08:19.794Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:08:19.819Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:08:19.832Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.132,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:08:19.833Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:08:19.838Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.617,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:08:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:08:19.846Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9691,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:08:19.847Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:08:19.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.7599,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:08:19.867Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:08:19.872Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.5987,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:08:19.872Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:08:19.898Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:08:19.925Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.9898,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:08:19.926Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:08:19.966Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.8779,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:08:19.967Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:09:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:09:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:09:19.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.9505,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:09:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:09:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.3642,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:09:19.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:09:19.674Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:09:19.685Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.6938,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:09:19.686Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:09:19.689Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.1228,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:09:19.690Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:09:19.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.9763,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:09:19.692Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:09:19.707Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:09:19.713Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:09:19.725Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:09:19.727Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4264,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:09:19.728Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:09:19.736Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.1079,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:09:19.738Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:09:19.746Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.2578,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:09:19.749Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:09:19.753Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.3453,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:09:19.753Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:09:19.756Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:09:19.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.2368,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:09:19.761Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:09:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:09:19.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:09:19.790Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.0754,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:09:19.791Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:09:19.796Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.0248,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:09:19.797Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:09:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.3848,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:09:19.801Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:09:19.807Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.6246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:09:19.808Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:09:19.827Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8915,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:09:19.829Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:09:19.835Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.7227,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:09:19.837Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:09:19.842Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.5964,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:09:19.843Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:09:19.864Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:09:19.871Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.1717,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:09:19.873Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:09:19.887Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.3947,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:09:19.888Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:09:19.907Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.8318,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:09:19.908Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T18:10:19.586Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:10:19.603Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:10:19.625Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.4061,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:10:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:10:19.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5811,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:10:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:10:19.650Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.3336,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:10:19.651Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:10:19.655Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.791,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:10:19.656Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:10:19.687Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:10:19.693Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:10:19.701Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:10:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:10:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.9277,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:10:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:10:19.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0474,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:10:19.727Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:10:19.728Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.6355,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:10:19.729Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:10:19.730Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7536,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:10:19.731Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:10:19.741Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.5003,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:10:19.741Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:10:19.747Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.6875,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:10:19.750Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:10:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.5529,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:10:19.758Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:10:19.767Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1698,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:10:19.768Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:10:19.784Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:10:19.790Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:10:19.800Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.0524,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:10:19.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:10:19.805Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:10:19.821Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9951,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:10:19.822Z","event":"tenancy.ok","rid":null,"ms":38,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:10:19.829Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.1095,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:10:19.830Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:10:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.5445,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:10:19.835Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:10:19.865Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:10:19.866Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:10:19.871Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4422,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:10:19.871Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:10:19.887Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:10:19.906Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.6041,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:10:19.908Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:10:19.941Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9961,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:10:19.941Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:11:19.576Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:11:19.603Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:11:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.1421,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:11:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:11:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.0669,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:11:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:11:19.666Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7101,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:11:19.666Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:11:19.669Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3024,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:11:19.669Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:11:19.685Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:11:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:11:19.711Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.0129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:11:19.714Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:11:19.719Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:11:19.728Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:11:19.730Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.5339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:11:19.731Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:11:19.732Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.2441,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:11:19.733Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:11:19.736Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.3728,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:11:19.737Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:11:19.751Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:11:19.767Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.477,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:11:19.769Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:11:19.773Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.6662,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:11:19.774Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:11:19.775Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.9028,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:11:19.776Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:11:19.779Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.2397,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:11:19.781Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:11:19.789Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:11:19.814Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.7784,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:11:19.815Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:11:19.821Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.3839,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:11:19.822Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:11:19.828Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.9018,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:11:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:11:19.834Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:11:19.987Z","event":"tenants.lookup.default.ok","rid":null,"ms":154.8406,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:11:19.989Z","event":"tenancy.ok","rid":null,"ms":200,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:11:19.997Z","event":"tenants.lookup.exact.ok","rid":null,"ms":161.3722,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:11:19.997Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:11:20.027Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:11:20.029Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4337,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:11:20.032Z","event":"tenancy.ok","rid":null,"ms":198,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:11:20.052Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.7916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:11:20.053Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:11:20.068Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.5215,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:11:20.069Z","event":"tenancy.ok","rid":null,"ms":42,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:12:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:12:19.614Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:12:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.0949,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:12:19.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:12:19.650Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1274,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:12:19.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:12:19.681Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:12:19.687Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.7003,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:12:19.688Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:12:19.694Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.7676,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:12:19.696Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:12:19.709Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:12:19.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6867,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:12:19.714Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:12:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:12:19.727Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:12:19.730Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.5872,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:12:19.731Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:12:19.733Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.335,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:12:19.734Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:12:19.756Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:12:19.758Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.4327,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:12:19.759Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:12:19.763Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.5609,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:12:19.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:12:19.767Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3935,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:12:19.768Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:12:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:12:19.793Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:12:19.795Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.8155,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:12:19.796Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:12:19.797Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.0556,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:12:19.798Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:12:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.9104,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:12:19.804Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:12:19.812Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.3642,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:12:19.813Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:12:19.831Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.654,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:12:19.832Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:12:19.833Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.746,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:12:19.834Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:12:19.841Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.8104,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:12:19.843Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:12:19.862Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:12:19.873Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.8821,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:12:19.876Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:12:19.887Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.0507,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:12:19.888Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:12:19.910Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.8362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:12:19.911Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:13:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:13:19.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.9755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:13:19.651Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:13:19.668Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:13:19.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:13:19.690Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3886,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:13:19.690Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:13:19.695Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.4082,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:13:19.696Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:13:19.710Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:13:19.713Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:13:19.730Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.9738,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:13:19.731Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:13:19.732Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.2742,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:13:19.732Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:13:19.733Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.4037,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:13:19.733Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:13:19.734Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.075,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:13:19.734Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:13:19.753Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:13:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:13:19.807Z","event":"tenants.lookup.default.ok","rid":null,"ms":75.82,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:13:19.808Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:13:19.833Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:13:19.870Z","event":"tenants.lookup.default.ok","rid":null,"ms":137.3491,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:13:19.871Z","event":"tenancy.ok","rid":null,"ms":158,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:13:19.908Z","event":"tenants.lookup.default.ok","rid":null,"ms":174.3025,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:13:19.909Z","event":"tenancy.ok","rid":null,"ms":220,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:13:19.913Z","event":"tenants.lookup.exact.ok","rid":null,"ms":128.9548,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:13:19.914Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:13:19.915Z","event":"tenants.lookup.exact.ok","rid":null,"ms":149.8352,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:13:19.916Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:13:19.918Z","event":"tenants.lookup.exact.ok","rid":null,"ms":83.8792,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:13:19.919Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:13:19.940Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:13:19.954Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.5918,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:13:19.955Z","event":"tenancy.ok","rid":null,"ms":173,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:13:19.960Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.3564,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:13:19.961Z","event":"tenancy.ok","rid":null,"ms":128,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:13:19.966Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.1349,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:13:19.967Z","event":"tenancy.ok","rid":null,"ms":214,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:13:19.975Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.9216,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:13:19.976Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:13:19.992Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.6551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:13:19.993Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:13:19.998Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:13:20.029Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.7002,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:13:20.030Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:13:20.193Z","event":"tenants.lookup.default.ok","rid":null,"ms":162.2291,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:13:20.195Z","event":"tenancy.ok","rid":null,"ms":197,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:14:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:14:19.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:14:19.619Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.6107,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:14:19.621Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:14:19.660Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.3526,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:14:19.662Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:14:19.667Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.7312,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:14:19.669Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:14:19.696Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.1105,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:14:19.698Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:14:19.712Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:14:19.731Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.5204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:14:19.732Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:14:19.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:14:19.747Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:14:19.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:14:19.769Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.543,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:14:19.770Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:14:19.771Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6364,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:14:19.773Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:14:19.774Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.1906,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:14:19.775Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:14:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:14:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:14:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.2549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:14:19.813Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:14:19.814Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.7806,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:14:19.814Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:14:19.816Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.3369,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:14:19.817Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:14:19.822Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.9064,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:14:19.823Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:14:19.824Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.9693,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:14:19.825Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:14:19.845Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:14:19.848Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8997,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:14:19.849Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:14:19.854Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6848,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:14:19.855Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:14:19.859Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3764,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:14:19.860Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:14:19.875Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.4182,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:14:19.876Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:14:19.886Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:14:19.908Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7869,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:14:19.909Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:14:19.912Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.1406,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:14:19.913Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:14:19.933Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.1511,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:14:19.934Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T18:15:19.586Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:15:19.604Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:15:19.631Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.023,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:15:19.632Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:15:19.633Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3436,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:15:19.634Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:15:19.657Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.7729,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:15:19.658Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:15:19.663Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.5439,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:15:19.665Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:15:19.709Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:15:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:15:19.727Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.8197,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:15:19.728Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:15:19.735Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:15:19.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:15:19.784Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:15:19.846Z","event":"tenants.lookup.exact.ok","rid":null,"ms":125.1185,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:15:19.846Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:15:19.923Z","event":"tenants.lookup.exact.ok","rid":null,"ms":187.0309,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:15:19.924Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:15:19.926Z","event":"tenants.lookup.exact.ok","rid":null,"ms":185.6253,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:15:19.928Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:15:19.930Z","event":"tenants.lookup.exact.ok","rid":null,"ms":144.3467,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:15:19.931Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:15:19.934Z","event":"tenants.lookup.default.ok","rid":null,"ms":205.29,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:15:19.936Z","event":"tenancy.ok","rid":null,"ms":227,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:15:19.945Z","event":"tenants.lookup.default.ok","rid":null,"ms":98.0525,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:15:19.946Z","event":"tenancy.ok","rid":null,"ms":226,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:15:19.963Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5692,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:15:19.965Z","event":"tenancy.ok","rid":null,"ms":226,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:15:19.977Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.0267,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:15:19.979Z","event":"tenancy.ok","rid":null,"ms":244,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:15:19.992Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.6496,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:15:19.994Z","event":"tenancy.ok","rid":null,"ms":210,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:15:20.063Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:15:20.070Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:15:20.073Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:15:20.236Z","event":"tenants.lookup.exact.ok","rid":null,"ms":168.5021,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:15:20.238Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:15:20.240Z","event":"tenants.lookup.exact.ok","rid":null,"ms":168.9791,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:15:20.241Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:15:20.243Z","event":"tenants.lookup.exact.ok","rid":null,"ms":166.9572,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:15:20.244Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:15:20.271Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9011,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:15:20.272Z","event":"tenancy.ok","rid":null,"ms":209,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:15:20.279Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.0507,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:15:20.281Z","event":"tenancy.ok","rid":null,"ms":211,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:15:20.293Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.269,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:15:20.295Z","event":"tenancy.ok","rid":null,"ms":222,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:16:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:16:19.613Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:16:19.631Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:16:19.632Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:16:19.633Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.3543,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:16:19.634Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:16:19.668Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3142,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:16:19.669Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:16:19.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:16:19.682Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.3932,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:16:19.683Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:16:19.710Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.2651,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:16:19.712Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:16:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:16:19.727Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:16:19.741Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:16:19.743Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3784,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:16:19.744Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:16:19.753Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.449,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:16:19.754Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:16:19.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.0781,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:16:19.756Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:16:19.765Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.2077,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:16:19.766Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:16:19.769Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:16:19.778Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.2617,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:16:19.779Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:16:19.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.6149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:16:19.785Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:16:19.792Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:16:19.793Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.3086,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:16:19.794Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:16:19.800Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.9577,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:16:19.801Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:16:19.816Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:16:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.726,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:16:19.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:16:19.822Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.1687,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:16:19.823Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:16:19.843Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.6009,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:16:19.848Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:16:19.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.0695,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:16:19.852Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:16:19.867Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:16:19.889Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5501,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:16:19.890Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:16:19.898Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9071,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:16:19.899Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:16:19.948Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.9778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:16:19.948Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:17:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:17:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.0311,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:17:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:17:19.658Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:17:19.678Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.6022,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:17:19.679Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:17:19.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:17:19.698Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.0551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:17:19.699Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:17:19.710Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.9789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:17:19.711Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:17:19.728Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:17:19.730Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.888,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:17:19.731Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:17:19.737Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.3089,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:17:19.739Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:17:19.763Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:17:19.770Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.2231,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:17:19.771Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:17:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:17:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:17:19.789Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.7595,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:17:19.790Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:17:19.791Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.3102,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:17:19.792Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:17:19.801Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:17:19.811Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.5702,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:17:19.812Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:17:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:17:19.818Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:17:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.2766,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:17:19.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:17:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3313,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:17:19.835Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:17:19.840Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.8734,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:17:19.840Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:17:19.846Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.5822,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:17:19.848Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:17:19.869Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.8663,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:17:19.870Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:17:19.882Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:17:19.911Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.1573,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:17:19.912Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:17:19.915Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:17:19.932Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.0724,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:17:19.933Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:17:19.934Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.9972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:17:19.935Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:17:19.957Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.1649,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:17:19.958Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:18:19.581Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:18:19.606Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:18:19.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:18:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:18:19.770Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:18:20.202Z","event":"tenants.lookup.exact.ok","rid":null,"ms":611.9293,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:18:20.204Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:18:20.207Z","event":"tenants.lookup.exact.ok","rid":null,"ms":598.5327,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:18:20.208Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:18:20.212Z","event":"tenants.lookup.exact.ok","rid":null,"ms":518.4776,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:18:20.213Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:18:20.216Z","event":"tenants.lookup.exact.ok","rid":null,"ms":494.3605,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:18:20.217Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:18:20.220Z","event":"tenants.lookup.exact.ok","rid":null,"ms":448.1173,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:18:20.221Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:18:20.232Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.2137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:18:20.233Z","event":"tenancy.ok","rid":null,"ms":513,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:18:20.243Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0018,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:18:20.246Z","event":"tenancy.ok","rid":null,"ms":557,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:18:20.256Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.0299,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:18:20.262Z","event":"tenancy.ok","rid":null,"ms":656,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:18:20.273Z","event":"tenants.lookup.default.ok","rid":null,"ms":67.1167,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:18:20.279Z","event":"tenancy.ok","rid":null,"ms":698,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:18:20.294Z","event":"tenants.lookup.default.ok","rid":null,"ms":72.0749,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:18:20.296Z","event":"tenancy.ok","rid":null,"ms":526,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:18:20.354Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:18:20.360Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:18:20.364Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:18:20.373Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:18:20.379Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:18:20.535Z","event":"tenants.lookup.exact.ok","rid":null,"ms":169.7266,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:18:20.537Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:18:20.538Z","event":"tenants.lookup.exact.ok","rid":null,"ms":163.6528,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:18:20.540Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:18:20.542Z","event":"tenants.lookup.exact.ok","rid":null,"ms":186.7379,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:18:20.543Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:18:20.544Z","event":"tenants.lookup.exact.ok","rid":null,"ms":164.0392,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:18:20.545Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:18:20.545Z","event":"tenants.lookup.exact.ok","rid":null,"ms":184.3683,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:18:20.546Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:18:20.571Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4193,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:18:20.572Z","event":"tenancy.ok","rid":null,"ms":199,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:18:20.581Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9751,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:18:20.582Z","event":"tenancy.ok","rid":null,"ms":228,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:18:20.594Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.8365,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:18:20.596Z","event":"tenancy.ok","rid":null,"ms":217,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:18:20.606Z","event":"tenants.lookup.default.ok","rid":null,"ms":59.4095,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:18:20.608Z","event":"tenancy.ok","rid":null,"ms":248,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:18:20.617Z","event":"tenants.lookup.default.ok","rid":null,"ms":78.9912,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:18:20.618Z","event":"tenancy.ok","rid":null,"ms":254,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:19:19.574Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:19:19.603Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:19:19.617Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3071,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:19:19.618Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:19:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.7583,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:19:19.639Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:19:19.641Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.3284,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:19:19.642Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:19:19.669Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:19:19.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4195,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:19:19.676Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:19:19.690Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:19:19.704Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.2021,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:19:19.706Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:19:19.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:19:19.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.3793,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:19:19.714Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:19:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:19:19.740Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.5949,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:19:19.741Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:19:19.742Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:19:19.743Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:19:19.746Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1515,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:19:19.746Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:19:19.756Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.9821,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:19:19.757Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:19:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:19:19.781Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:19:19.783Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.4738,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:19:19.783Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:19:19.787Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8517,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:19:19.787Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:19:19.818Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:19:19.827Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.9622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:19:19.829Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:19:19.830Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.2004,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:19:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:19:19.862Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.3139,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:19:19.863Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:19:19.866Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.0256,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:19:19.867Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:19:19.869Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.7465,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:19:19.870Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:19:19.893Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.2093,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:19:19.896Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:19:19.903Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:19:19.926Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.7278,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:19:19.928Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:19:19.945Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.2652,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:19:19.946Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T18:20:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:20:19.600Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:20:19.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.2427,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:20:19.651Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:20:19.654Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.8568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:20:19.656Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:20:19.688Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:20:19.693Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1866,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:20:19.695Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:20:19.706Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.1215,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:20:19.708Z","event":"tenancy.ok","rid":null,"ms":124,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:20:19.734Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:20:19.736Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.4328,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:20:19.737Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:20:19.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:20:19.767Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.5787,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:20:19.768Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:20:19.772Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:20:19.774Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.5736,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:20:19.778Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:20:19.791Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6329,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:20:19.794Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:20:19.797Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:20:19.809Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:20:19.949Z","event":"tenants.lookup.exact.ok","rid":null,"ms":150.7317,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:20:19.952Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:20:19.954Z","event":"tenants.lookup.exact.ok","rid":null,"ms":143.6287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:20:19.956Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:20:19.958Z","event":"tenants.lookup.default.ok","rid":null,"ms":188.4939,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:20:19.959Z","event":"tenancy.ok","rid":null,"ms":225,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:20:19.968Z","event":"tenants.lookup.exact.ok","rid":null,"ms":194.7432,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:20:19.970Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:20:19.972Z","event":"tenants.lookup.default.ok","rid":null,"ms":177.819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:20:19.974Z","event":"tenancy.ok","rid":null,"ms":208,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:20:19.991Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.5109,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:20:19.995Z","event":"tenancy.ok","rid":null,"ms":186,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:20:20.007Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.6553,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:20:20.009Z","event":"tenancy.ok","rid":null,"ms":212,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:20:20.022Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.0863,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:20:20.024Z","event":"tenancy.ok","rid":null,"ms":252,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:20:20.080Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:20:20.099Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:20:20.105Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.7676,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:20:20.106Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:20:20.126Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.8988,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:20:20.127Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:20:20.128Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.9818,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:20:20.129Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:20:20.145Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.6232,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:20:20.146Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:21:19.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:21:19.616Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:21:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.7324,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:21:19.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:21:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.2638,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:21:19.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:21:19.655Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.6314,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:21:19.656Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:21:19.700Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.5504,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:21:19.702Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:21:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:21:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:21:19.744Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.1701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:21:19.745Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:21:19.747Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.9481,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:21:19.748Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:21:19.754Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:21:19.769Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0141,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:21:19.770Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:21:19.777Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.6439,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:21:19.778Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:21:19.780Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.2421,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:21:19.781Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:21:19.789Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:21:19.792Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:21:19.808Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.4934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:21:19.809Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:21:19.815Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6351,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:21:19.816Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:21:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1907,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:21:19.818Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:21:19.821Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:21:19.838Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:21:19.862Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.9966,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:21:19.863Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:21:19.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.3624,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:21:19.866Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:21:19.872Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.06,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:21:19.873Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:21:19.877Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.8855,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:21:19.879Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:21:19.905Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:21:19.947Z","event":"tenants.lookup.default.ok","rid":null,"ms":71.7284,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:21:19.948Z","event":"tenancy.ok","rid":null,"ms":127,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:21:19.953Z","event":"tenants.lookup.default.ok","rid":null,"ms":73.5965,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:21:19.957Z","event":"tenancy.ok","rid":null,"ms":119,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:21:19.970Z","event":"tenants.lookup.exact.ok","rid":null,"ms":63.5284,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:21:19.971Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:21:19.995Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.278,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:21:19.996Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:22:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:22:19.622Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.3862,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:22:19.623Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:22:19.629Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:22:19.655Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.5975,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:22:19.655Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:22:19.658Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.509,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:22:19.658Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:22:19.669Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:22:19.680Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:22:19.696Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.9714,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:22:19.698Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:22:19.704Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.7225,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:22:19.705Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:22:19.719Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:22:19.749Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:22:19.773Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:22:19.897Z","event":"tenants.lookup.exact.ok","rid":null,"ms":215.3213,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:22:19.899Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:22:19.902Z","event":"tenants.lookup.default.ok","rid":null,"ms":196.7844,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:22:19.904Z","event":"tenancy.ok","rid":null,"ms":235,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:22:19.915Z","event":"tenants.lookup.exact.ok","rid":null,"ms":194.2853,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:22:19.917Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:22:19.920Z","event":"tenants.lookup.exact.ok","rid":null,"ms":169.6537,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:22:19.922Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:22:19.924Z","event":"tenants.lookup.exact.ok","rid":null,"ms":150.1623,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:22:19.926Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:22:19.937Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0031,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:22:19.940Z","event":"tenancy.ok","rid":null,"ms":260,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:22:19.952Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9494,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:22:19.955Z","event":"tenancy.ok","rid":null,"ms":236,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:22:19.965Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.1032,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:22:19.967Z","event":"tenancy.ok","rid":null,"ms":218,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:22:19.979Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.1351,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:22:19.982Z","event":"tenancy.ok","rid":null,"ms":209,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:22:19.993Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:22:20.016Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.352,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:22:20.017Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:22:20.056Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.69,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:22:20.057Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:22:20.065Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:22:20.073Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:22:20.292Z","event":"tenants.lookup.exact.ok","rid":null,"ms":226.3917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:22:20.300Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:22:20.302Z","event":"tenants.lookup.exact.ok","rid":null,"ms":227.0146,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:22:20.303Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:22:20.332Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.6581,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:22:20.335Z","event":"tenancy.ok","rid":null,"ms":262,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:22:20.348Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.7129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:22:20.353Z","event":"tenancy.ok","rid":null,"ms":287,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:23:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:23:19.604Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:23:19.612Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.1072,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:23:19.613Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:23:19.637Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6201,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:23:19.637Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:23:19.648Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7948,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:23:19.649Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:23:19.672Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:23:19.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.6382,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:23:19.676Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:23:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:23:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:23:19.713Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:23:19.715Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.7521,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:23:19.716Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:23:19.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.193,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:23:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:23:19.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.802,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:23:19.727Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:23:19.735Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.6805,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:23:19.736Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:23:19.737Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.7829,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:23:19.738Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:23:19.743Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.4333,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:23:19.744Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:23:19.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.0012,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:23:19.751Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:23:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.7608,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:23:19.758Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:23:19.797Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:23:19.801Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:23:19.811Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:23:19.832Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.739,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:23:19.835Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:23:19.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.1833,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:23:19.837Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:23:19.838Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.8554,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:23:19.838Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:23:19.875Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.413,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:23:19.876Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:23:19.878Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.0165,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:23:19.879Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:23:19.884Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.9398,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:23:19.886Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:23:19.907Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:23:19.927Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.0551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:23:19.928Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:23:19.946Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.5834,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:23:19.948Z","event":"tenancy.ok","rid":null,"ms":41,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:24:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:24:19.626Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:24:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.5041,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:24:19.642Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:24:19.646Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.7122,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:24:19.647Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:24:19.672Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.3978,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:24:19.673Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:24:19.678Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.5355,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:24:19.679Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:24:19.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:24:19.707Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:24:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:24:19.717Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8896,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:24:19.718Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:24:19.727Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.5312,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:24:19.728Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:24:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.1216,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:24:19.735Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:24:19.737Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.5836,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:24:19.738Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:24:19.747Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.3999,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:24:19.748Z","event":"tenancy.ok","rid":null,"ms":41,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:24:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.9973,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:24:19.759Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:24:19.773Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:24:19.795Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:24:19.799Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.4903,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:24:19.800Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:24:19.808Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:24:19.827Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.7772,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:24:19.829Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:24:19.835Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.1994,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:24:19.836Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:24:19.837Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.7183,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:24:19.837Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:24:19.849Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:24:19.865Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.2586,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:24:19.866Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:24:19.869Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.2822,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:24:19.869Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:24:19.872Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.1369,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:24:19.873Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:24:19.891Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.3857,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:24:19.892Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:24:19.902Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:24:19.926Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.7664,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:24:19.927Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:24:19.947Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.0985,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:24:19.948Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T18:25:19.579Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:25:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:25:19.615Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.6338,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:25:19.616Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:25:19.658Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.0211,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:25:19.660Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:25:19.667Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.1741,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:25:19.668Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:25:19.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:25:19.694Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.6457,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:25:19.699Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:25:19.715Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.5903,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:25:19.717Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:25:19.730Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:25:19.745Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:25:19.753Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:25:19.754Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:25:19.761Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2975,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:25:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:25:19.767Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.5017,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:25:19.769Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:25:19.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:25:19.793Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.0698,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:25:19.794Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:25:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4427,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:25:19.801Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:25:19.807Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:25:19.809Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.0184,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:25:19.811Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:25:19.823Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:25:19.833Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.172,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:25:19.834Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:25:19.841Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0546,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:25:19.842Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:25:19.844Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.5711,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:25:19.846Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:25:19.850Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:25:19.878Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.9931,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:25:19.879Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:25:19.885Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.8461,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:25:19.886Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:25:19.893Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.1654,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:25:19.894Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:25:19.913Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:25:19.918Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.7175,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:25:19.920Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:25:19.947Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.428,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:25:19.948Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:25:19.975Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.4332,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:25:19.976Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:26:19.596Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:26:19.621Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:26:19.650Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.2861,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:26:19.651Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:26:19.667Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.118,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:26:19.668Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:26:19.677Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:26:19.695Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.1326,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:26:19.695Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:26:19.708Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.2755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:26:19.710Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:26:19.730Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:26:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":55.7796,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:26:19.737Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:26:19.778Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:26:19.785Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.2696,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:26:19.787Z","event":"tenancy.ok","rid":null,"ms":110,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:26:19.794Z","event":"tenants.lookup.exact.ok","rid":null,"ms":60.9175,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:26:19.795Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:26:19.798Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:26:19.804Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:26:19.807Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.3705,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:26:19.809Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:26:19.824Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:26:19.845Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.9062,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:26:19.846Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:26:19.846Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.227,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:26:19.847Z","event":"tenancy.ok","rid":null,"ms":117,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:26:19.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.7278,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:26:19.852Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:26:19.855Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5545,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:26:19.856Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:26:19.857Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.9648,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:26:19.858Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:26:19.863Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:26:19.881Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0331,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:26:19.882Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:26:19.893Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.8016,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:26:19.894Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:26:19.899Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.2872,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:26:19.900Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:26:19.901Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.2815,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:26:19.901Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:26:19.920Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:26:19.926Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.9167,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:26:19.927Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:26:19.958Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.004,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:26:19.959Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:26:20.005Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.5008,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:26:20.006Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:27:19.585Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:27:19.613Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:27:19.619Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.9239,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:27:19.621Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:27:19.633Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.9105,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:27:19.634Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:27:19.634Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.6329,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:27:19.635Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:27:19.675Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:27:19.676Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.4838,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:27:19.678Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:27:19.692Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:27:19.714Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.1737,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:27:19.715Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:27:19.716Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.5729,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:27:19.717Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:27:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:27:19.725Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:27:19.754Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5069,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:27:19.755Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:27:19.758Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.2802,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:27:19.758Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:27:19.763Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.5319,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:27:19.763Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:27:19.764Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.8735,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:27:19.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:27:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:27:19.796Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.2065,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:27:19.798Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:27:19.805Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.5506,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:27:19.807Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:27:19.817Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:27:19.828Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.296,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:27:19.829Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:27:19.838Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.7713,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:27:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:27:19.842Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:27:19.853Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.1315,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:27:19.855Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:27:19.859Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.0586,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:27:19.860Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:27:19.863Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.4277,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:27:19.864Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:27:19.882Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:27:19.895Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.6276,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:27:19.896Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:27:19.897Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.8967,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:27:19.897Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:27:19.927Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6535,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:27:19.928Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:28:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:28:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:28:19.619Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.8276,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:28:19.620Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:28:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.5784,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:28:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:28:19.637Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.3526,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:28:19.638Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:28:19.662Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:28:19.673Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4138,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:28:19.674Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:28:19.679Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.2155,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:28:19.680Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:28:19.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:28:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:28:19.721Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.5829,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:28:19.723Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:28:19.727Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.7423,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:28:19.728Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:28:19.736Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:28:19.738Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.29,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:28:19.739Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:28:19.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.4861,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:28:19.760Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:28:19.763Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.4848,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:28:19.763Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:28:19.764Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.7816,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:28:19.765Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:28:19.784Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:28:19.797Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.8992,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:28:19.798Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:28:19.807Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:28:19.809Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.7652,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:28:19.810Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:28:19.840Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8236,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:28:19.841Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:28:19.846Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.3683,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:28:19.846Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:28:19.862Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:28:19.873Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:28:19.875Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.7835,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:28:19.876Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:28:19.882Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.6454,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:28:19.883Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:28:19.890Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.8084,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:28:19.891Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:28:19.909Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.3083,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:28:19.909Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:28:19.919Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.2715,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:28:19.920Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:29:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:29:19.631Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:29:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.0768,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:29:19.642Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:29:19.674Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:29:19.676Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9729,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:29:19.677Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:29:19.682Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.5307,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:29:19.683Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:29:19.700Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:29:19.704Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:29:19.711Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.4571,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:29:19.712Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:29:19.714Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.0175,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:29:19.715Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:29:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.1053,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:29:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:29:19.729Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2031,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:29:19.730Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:29:19.736Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:29:19.743Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4206,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:29:19.745Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:29:19.753Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5023,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:29:19.756Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:29:19.766Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.2018,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:29:19.768Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:29:19.776Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.5967,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:29:19.777Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:29:19.797Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.0758,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:29:19.798Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:29:19.827Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:29:19.829Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:29:19.850Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.8109,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:29:19.851Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:29:19.853Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.4141,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:29:19.854Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:29:19.859Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:29:19.875Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.8888,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:29:19.876Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:29:19.881Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.3992,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:29:19.883Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:29:19.892Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.997,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:29:19.893Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:29:19.914Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.2741,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:29:19.915Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:29:19.923Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:29:19.971Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.5417,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:29:19.972Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:29:19.989Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.7098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:29:19.990Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T18:30:19.608Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:30:19.622Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:30:19.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.7908,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:30:19.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:30:19.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.1232,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:30:19.639Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:30:19.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.2906,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:30:19.676Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:30:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.651,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:30:19.690Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:30:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:30:19.724Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.6416,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:30:19.726Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:30:19.741Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:30:19.760Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:30:19.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:30:19.763Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:30:19.772Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2692,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:30:19.773Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:30:19.777Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:30:19.791Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:30:19.795Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.5044,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:30:19.796Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:30:19.803Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9726,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:30:19.804Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:30:19.806Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.2584,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:30:19.807Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:30:19.810Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.8835,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:30:19.811Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:30:19.820Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:30:19.842Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.5407,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:30:19.843Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:30:19.849Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.5079,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:30:19.850Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:30:19.853Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.4911,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:30:19.854Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:30:19.860Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.9204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:30:19.861Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:30:19.869Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:30:19.875Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.6937,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:30:19.876Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:30:19.887Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:30:19.894Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.4055,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:30:19.895Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:30:19.905Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.6911,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:30:19.906Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:30:19.929Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.997,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:30:19.930Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:30:19.938Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6029,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:30:19.939Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:31:19.585Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:31:19.616Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:31:19.622Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.4244,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:31:19.623Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:31:19.634Z","event":"tenants.lookup.default.ok","rid":null,"ms":9.5245,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:31:19.635Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:31:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.3949,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:31:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:31:19.655Z","event":"tenants.lookup.default.ok","rid":null,"ms":10.3701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:31:19.657Z","event":"tenancy.ok","rid":null,"ms":41,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:31:19.671Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:31:19.692Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:31:19.698Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.452,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:31:19.699Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:31:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:31:19.709Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:31:19.721Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2258,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:31:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:31:19.722Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.1036,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:31:19.723Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:31:19.740Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.7103,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:31:19.741Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:31:19.742Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.4064,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:31:19.743Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:31:19.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.065,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:31:19.751Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:31:19.760Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.4434,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:31:19.762Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:31:19.773Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:31:19.782Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.577,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:31:19.784Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:31:19.797Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:31:19.800Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.5497,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:31:19.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:31:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.2008,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:31:19.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:31:19.821Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.3717,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:31:19.822Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:31:19.827Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:31:19.856Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.9048,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:31:19.857Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:31:19.863Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.5344,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:31:19.864Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:31:19.886Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:31:19.892Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.8127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:31:19.893Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:31:19.920Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.6897,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:31:19.920Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:31:19.955Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6416,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:31:19.955Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:32:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:32:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:32:19.616Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.6286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:32:19.618Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:32:19.637Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.7433,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:32:19.637Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:32:19.642Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0395,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:32:19.643Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:32:19.673Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:32:19.681Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9183,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:32:19.683Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:32:19.697Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:32:19.716Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:32:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.3257,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:32:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:32:19.723Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.0254,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:32:19.724Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:32:19.727Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:32:19.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5751,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:32:19.763Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:32:19.767Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.6916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:32:19.768Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:32:19.769Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.2087,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:32:19.770Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:32:19.775Z","event":"tenants.lookup.exact.ok","rid":null,"ms":58.3955,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:32:19.776Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:32:19.795Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.3474,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:32:19.798Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:32:19.804Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.5117,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:32:19.805Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:32:19.816Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:32:19.828Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:32:19.840Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:32:19.842Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.4666,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:32:19.843Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:32:19.857Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.5029,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:32:19.858Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:32:19.866Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.0236,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:32:19.866Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:32:19.868Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.2524,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:32:19.868Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:32:19.889Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:32:19.896Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7111,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:32:19.897Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:32:19.903Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.4384,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:32:19.905Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:32:19.940Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.6226,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:32:19.941Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:32:19.974Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6944,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:32:19.975Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:33:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:33:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:33:19.616Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.0849,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:33:19.618Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:33:19.646Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.4745,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:33:19.647Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:33:19.648Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.919,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:33:19.648Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:33:19.675Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:33:19.685Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:33:19.713Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:33:19.722Z","event":"tenants.lookup.default.ok","rid":null,"ms":74.554,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:33:19.723Z","event":"tenancy.ok","rid":null,"ms":111,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:33:19.728Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.8829,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:33:19.729Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:33:19.730Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.6204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:33:19.730Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:33:19.744Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.8584,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:33:19.745Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:33:19.749Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:33:19.771Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:33:19.774Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.3984,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:33:19.776Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:33:19.783Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.5193,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:33:19.784Z","event":"tenancy.ok","rid":null,"ms":109,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:33:19.788Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.8537,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:33:19.789Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:33:19.795Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.2392,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:33:19.796Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:33:19.799Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1251,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:33:19.799Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:33:19.822Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:33:19.827Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4229,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:33:19.828Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:33:19.837Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.8547,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:33:19.838Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:33:19.850Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:33:19.863Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.6417,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:33:19.864Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:33:19.869Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:33:19.870Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.6084,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:33:19.871Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:33:19.904Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.5362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:33:19.905Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:33:19.910Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.0837,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:33:19.911Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:33:19.913Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.8255,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:33:19.914Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:33:19.936Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.2084,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:33:19.937Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:34:19.597Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:34:19.618Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:34:19.620Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.8418,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:34:19.622Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:34:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.1332,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:34:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:34:19.641Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.4915,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:34:19.642Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:34:19.663Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:34:19.673Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:34:19.676Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.3991,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:34:19.677Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:34:19.681Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.6831,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:34:19.682Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:34:19.697Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.5812,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:34:19.698Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:34:19.700Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.4191,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:34:19.701Z","event":"tenancy.ok","rid":null,"ms":38,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:34:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:34:19.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:34:19.737Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.9343,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:34:19.738Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:34:19.743Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.7519,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:34:19.744Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:34:19.745Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.7396,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:34:19.746Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:34:19.755Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:34:19.777Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.3858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:34:19.780Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:34:19.782Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3079,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:34:19.783Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:34:19.789Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.1843,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:34:19.791Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:34:19.801Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:34:19.823Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.9497,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:34:19.824Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:34:19.829Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2596,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:34:19.830Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:34:19.832Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:34:19.857Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.1239,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:34:19.858Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:34:19.862Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.1245,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:34:19.863Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:34:19.878Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:34:19.897Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6608,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:34:19.898Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:34:19.901Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.6761,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:34:19.901Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:34:19.936Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.1603,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:34:19.936Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T18:35:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:35:19.620Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.3027,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:35:19.621Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:35:19.651Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:35:19.658Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.122,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:35:19.660Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:35:19.676Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.4684,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:35:19.678Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:35:19.696Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:35:19.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:35:19.717Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:35:19.718Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:35:19.725Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.6432,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:35:19.726Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:35:19.740Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4762,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:35:19.741Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:35:19.746Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.1398,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:35:19.747Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:35:19.760Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:35:19.777Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0172,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:35:19.779Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:35:19.784Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1643,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:35:19.785Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:35:19.791Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:35:19.806Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:35:19.813Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:35:19.816Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.0193,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:35:19.817Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:35:19.824Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4201,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:35:19.825Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:35:19.837Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.2802,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:35:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:35:19.840Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1503,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:35:19.841Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:35:19.847Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.8995,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:35:19.849Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:35:19.885Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.3526,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:35:19.886Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:35:19.893Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.5391,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:35:19.893Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:35:19.927Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:35:19.969Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:35:20.195Z","event":"tenants.lookup.exact.ok","rid":null,"ms":266.7561,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:35:20.196Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:35:20.197Z","event":"tenants.lookup.exact.ok","rid":null,"ms":227.2783,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:35:20.198Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:35:20.217Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.455,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:35:20.217Z","event":"tenancy.ok","rid":null,"ms":248,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:35:20.222Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.6724,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:35:20.223Z","event":"tenancy.ok","rid":null,"ms":296,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:36:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:36:19.613Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:36:19.628Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.4807,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:36:19.629Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:36:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:36:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:36:19.663Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3919,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:36:19.664Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:36:19.702Z","event":"tenants.lookup.default.ok","rid":null,"ms":56.5542,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:36:19.704Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:36:19.847Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:36:19.863Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:36:19.875Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:36:19.890Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:36:19.894Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:36:19.899Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.0521,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:36:19.900Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:36:19.908Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.473,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:36:19.909Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:36:19.910Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.3298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:36:19.911Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:36:19.948Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.7479,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:36:19.950Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:36:19.951Z","event":"tenants.lookup.exact.ok","rid":null,"ms":54.6737,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:36:19.952Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:36:19.954Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.0854,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:36:19.955Z","event":"tenancy.ok","rid":null,"ms":108,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:36:19.961Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.4149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:36:19.963Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:36:19.973Z","event":"tenants.lookup.default.ok","rid":null,"ms":60.9784,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:36:19.974Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:36:19.985Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:36:19.986Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:36:19.992Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.9119,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:36:19.993Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:36:20.039Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:36:20.042Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:36:20.046Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:36:20.094Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.2203,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:36:20.095Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:36:20.096Z","event":"tenants.lookup.exact.ok","rid":null,"ms":55.7493,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:36:20.096Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:36:20.097Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.8989,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:36:20.098Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:36:20.136Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.267,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:36:20.136Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:36:20.139Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.5052,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:36:20.140Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:36:20.148Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.4211,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:36:20.149Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:37:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:37:19.603Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:37:19.683Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:37:19.713Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:37:19.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:37:20.127Z","event":"tenants.lookup.exact.ok","rid":null,"ms":442.5046,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:37:20.142Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:37:20.143Z","event":"tenants.lookup.exact.ok","rid":null,"ms":429.089,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:37:20.144Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:37:20.146Z","event":"tenants.lookup.exact.ok","rid":null,"ms":540.7903,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:37:20.147Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:37:20.149Z","event":"tenants.lookup.exact.ok","rid":null,"ms":559.7928,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:37:20.150Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:37:20.328Z","event":"tenants.lookup.exact.ok","rid":null,"ms":540.2633,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:37:20.330Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:37:20.390Z","event":"tenants.lookup.default.ok","rid":null,"ms":247.8957,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:37:20.392Z","event":"tenancy.ok","rid":null,"ms":709,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:37:20.407Z","event":"tenants.lookup.default.ok","rid":null,"ms":256.2782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:37:20.408Z","event":"tenancy.ok","rid":null,"ms":821,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:37:20.415Z","event":"tenants.lookup.default.ok","rid":null,"ms":267.7704,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:37:20.417Z","event":"tenancy.ok","rid":null,"ms":814,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:37:20.424Z","event":"tenants.lookup.default.ok","rid":null,"ms":279.4852,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:37:20.427Z","event":"tenancy.ok","rid":null,"ms":713,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:37:20.660Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:37:20.681Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:37:20.688Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:37:20.696Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:37:21.157Z","event":"tenants.lookup.default.ok","rid":null,"ms":825.2193,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:37:21.158Z","event":"tenancy.ok","rid":null,"ms":1373,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:37:21.231Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:37:21.417Z","event":"tenants.lookup.exact.ok","rid":null,"ms":745.4744,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:37:21.419Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:37:21.420Z","event":"tenants.lookup.exact.ok","rid":null,"ms":735.2443,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:37:21.422Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:37:21.424Z","event":"tenants.lookup.exact.ok","rid":null,"ms":733.894,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:37:21.425Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:37:21.427Z","event":"tenants.lookup.exact.ok","rid":null,"ms":727.4839,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:37:21.428Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:37:23.601Z","event":"tenants.lookup.exact.ok","rid":null,"ms":2360.1662,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:37:23.603Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:37:23.677Z","event":"tenants.lookup.default.ok","rid":null,"ms":2248.1048,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:37:23.679Z","event":"tenancy.ok","rid":null,"ms":2983,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:37:23.685Z","event":"tenants.lookup.default.ok","rid":null,"ms":2259.2858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:37:23.686Z","event":"tenancy.ok","rid":null,"ms":2998,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:37:23.695Z","event":"tenants.lookup.default.ok","rid":null,"ms":2272.4106,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:37:23.696Z","event":"tenancy.ok","rid":null,"ms":3015,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:37:23.704Z","event":"tenants.lookup.default.ok","rid":null,"ms":2284.0302,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:37:23.706Z","event":"tenancy.ok","rid":null,"ms":3046,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:37:23.875Z","event":"tenants.lookup.default.ok","rid":null,"ms":271.1799,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:37:23.877Z","event":"tenancy.ok","rid":null,"ms":2646,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:38:19.583Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:38:19.599Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:38:19.618Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.8277,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:38:19.619Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:38:19.623Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.9003,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:38:19.624Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:38:19.663Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.6129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:38:19.664Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:38:19.670Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.7692,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:38:19.671Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:38:19.677Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:38:19.698Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.4619,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:38:19.700Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:38:19.703Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:38:19.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:38:19.738Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:38:19.741Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.2322,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:38:19.742Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:38:19.743Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.6832,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:38:19.744Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:38:19.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.4508,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:38:19.750Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:38:19.770Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:38:19.783Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:38:19.785Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.4499,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:38:19.786Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:38:19.788Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.1518,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:38:19.789Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:38:19.791Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.3781,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:38:19.792Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:38:19.797Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.4671,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:38:19.799Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:38:19.819Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0327,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:38:19.820Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:38:19.827Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.2054,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:38:19.828Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:38:19.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.8751,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:38:19.837Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:38:19.863Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.0676,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:38:19.865Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:38:19.871Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:38:19.902Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:38:19.904Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3108,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:38:19.905Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:38:19.938Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.9845,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:38:19.939Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:38:19.939Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.9196,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:38:19.940Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:38:19.958Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.661,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:38:19.959Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:39:19.579Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:39:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:39:19.615Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.4588,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:39:19.616Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:39:19.642Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.1463,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:39:19.644Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:39:19.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.2924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:39:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:39:19.676Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:39:19.683Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1611,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:39:19.684Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:39:19.698Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.1125,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:39:19.699Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:39:19.702Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:39:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:39:19.725Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.2237,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:39:19.726Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:39:19.735Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:39:19.737Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.6407,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:39:19.737Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:39:19.767Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.1783,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:39:19.769Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:39:19.771Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7695,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:39:19.772Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:39:19.775Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.458,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:39:19.777Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:39:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:39:19.796Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:39:19.802Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.6356,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:39:19.803Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:39:19.809Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6912,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:39:19.812Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:39:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:39:19.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:39:19.827Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.573,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:39:19.828Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:39:19.838Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:39:19.855Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.1768,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:39:19.856Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:39:19.861Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.8662,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:39:19.863Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:39:19.869Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.3762,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:39:19.871Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:39:19.899Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.7042,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:39:19.900Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:39:19.908Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:39:19.946Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.7757,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:39:19.946Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:39:19.980Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7933,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:39:19.981Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T18:40:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:40:19.599Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:40:19.623Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.526,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:40:19.623Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:40:19.625Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.1254,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:40:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:40:19.639Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.5134,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:40:19.639Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:40:19.647Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.7599,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:40:19.648Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:40:19.672Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:40:19.676Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:40:19.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:40:19.703Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:40:19.704Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3914,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:40:19.705Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:40:19.706Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7889,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:40:19.707Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:40:19.708Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:40:19.709Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:40:19.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.1374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:40:19.749Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:40:19.751Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.4471,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:40:19.752Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:40:19.752Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.0886,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:40:19.753Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:40:19.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.9561,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:40:19.760Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:40:19.779Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.1455,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:40:19.780Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:40:19.798Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:40:19.804Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:40:19.813Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:40:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.64,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:40:19.826Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:40:19.828Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.2421,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:40:19.829Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:40:19.830Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.9485,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:40:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:40:19.862Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.5654,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:40:19.864Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:40:19.868Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.6947,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:40:19.870Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:40:19.875Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.3942,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:40:19.877Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:40:19.909Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:40:19.945Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.3072,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:40:19.946Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:40:19.982Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8181,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:40:19.983Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:41:19.578Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:41:19.616Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:41:19.618Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.6328,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:41:19.619Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:41:19.641Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.318,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:41:19.642Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:41:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.1927,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:41:19.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:41:19.674Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:41:19.680Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.7386,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:41:19.682Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:41:19.695Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.5569,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:41:19.696Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:41:19.702Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:41:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:41:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:41:19.776Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:41:19.859Z","event":"tenants.lookup.default.ok","rid":null,"ms":162.7133,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:41:19.861Z","event":"tenancy.ok","rid":null,"ms":187,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:41:19.869Z","event":"tenants.lookup.exact.ok","rid":null,"ms":145.1132,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:41:19.870Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:41:19.873Z","event":"tenants.lookup.exact.ok","rid":null,"ms":145.2696,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:41:19.876Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:41:19.881Z","event":"tenants.lookup.exact.ok","rid":null,"ms":177.9283,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:41:19.883Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:41:19.885Z","event":"tenants.lookup.exact.ok","rid":null,"ms":107.7706,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:41:19.886Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:41:19.900Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.4187,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:41:19.902Z","event":"tenancy.ok","rid":null,"ms":180,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:41:19.912Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.8872,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:41:19.914Z","event":"tenancy.ok","rid":null,"ms":212,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:41:19.922Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.4828,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:41:19.924Z","event":"tenancy.ok","rid":null,"ms":198,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:41:19.933Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.3854,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:41:19.936Z","event":"tenancy.ok","rid":null,"ms":160,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:41:20.002Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:41:20.007Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:41:20.011Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:41:20.199Z","event":"tenants.lookup.exact.ok","rid":null,"ms":190.3998,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:41:20.201Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:41:20.202Z","event":"tenants.lookup.exact.ok","rid":null,"ms":197.6179,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:41:20.202Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:41:20.203Z","event":"tenants.lookup.exact.ok","rid":null,"ms":191.1033,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:41:20.204Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:41:20.220Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.546,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:41:20.221Z","event":"tenancy.ok","rid":null,"ms":214,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:41:20.229Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.2374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:41:20.230Z","event":"tenancy.ok","rid":null,"ms":228,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:41:20.240Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8522,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:41:20.243Z","event":"tenancy.ok","rid":null,"ms":232,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:42:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:42:19.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:42:19.626Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.9798,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:42:19.627Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:42:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.4962,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:42:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:42:19.661Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.4797,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:42:19.662Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:42:19.669Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.7229,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:42:19.671Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:42:19.718Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:42:19.747Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:42:19.755Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:42:19.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.3029,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:42:19.763Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:42:19.765Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.8613,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:42:19.766Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:42:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:42:19.779Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.7073,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:42:19.780Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:42:19.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.9005,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:42:19.785Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:42:19.791Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.2947,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:42:19.792Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:42:19.798Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:42:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.9366,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:42:19.801Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:42:19.810Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1021,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:42:19.811Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:42:19.820Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.2571,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:42:19.822Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:42:19.835Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:42:19.837Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.0764,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:42:19.839Z","event":"tenancy.ok","rid":null,"ms":41,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:42:19.846Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7021,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:42:19.847Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:42:19.859Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:42:19.867Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.9535,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:42:19.868Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:42:19.880Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.5477,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:42:19.881Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:42:19.884Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.2273,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:42:19.885Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:42:19.915Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.1632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:42:19.915Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:42:19.934Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:42:19.955Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.7582,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:42:19.956Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:42:19.981Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.1104,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:42:19.982Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:43:19.583Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:43:19.613Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:43:19.631Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.1383,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:43:19.631Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:43:19.646Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.157,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:43:19.647Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:43:19.654Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.1686,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:43:19.655Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:43:19.674Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:43:19.683Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:43:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.0017,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:43:19.691Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:43:19.694Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.2104,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:43:19.694Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:43:19.713Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:43:19.716Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:43:19.728Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.0268,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:43:19.729Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:43:19.730Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1189,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:43:19.731Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:43:19.740Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:43:19.741Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:43:19.743Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.2399,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:43:19.743Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:43:19.748Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.8362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:43:19.749Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:43:19.761Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.3664,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:43:19.762Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:43:19.769Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.3695,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:43:19.770Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:43:19.777Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:43:19.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.2054,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:43:19.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:43:19.808Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:43:19.832Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:43:19.840Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5566,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:43:19.841Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:43:19.843Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6879,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:43:19.844Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:43:19.860Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.0967,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:43:19.861Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:43:19.865Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.4383,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:43:19.867Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:43:19.901Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.6178,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:43:19.902Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:43:19.910Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:43:19.957Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.6602,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:43:19.958Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:43:20.007Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.7358,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:43:20.008Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:44:19.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:44:19.601Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:44:19.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.4293,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:44:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:44:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.529,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:44:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:44:19.645Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.5993,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:44:19.645Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:44:19.662Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.7844,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:44:19.664Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:44:19.703Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:44:19.728Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:44:19.735Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:44:19.741Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.0095,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:44:19.742Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:44:19.744Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:44:19.761Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6746,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:44:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:44:19.763Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.8221,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:44:19.763Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:44:19.764Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.2748,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:44:19.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:44:19.766Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.6842,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:44:19.768Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:44:19.783Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:44:19.787Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:44:19.796Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6093,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:44:19.797Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:44:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.2154,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:44:19.804Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:44:19.809Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.6915,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:44:19.810Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:44:19.814Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9612,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:44:19.815Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:44:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4262,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:44:19.818Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:44:19.845Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.2668,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:44:19.846Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:44:19.855Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.7079,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:44:19.856Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:44:19.863Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:44:19.886Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.8228,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:44:19.888Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:44:19.893Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:44:19.917Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.1271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:44:19.918Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:44:19.921Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.9015,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:44:19.921Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:44:19.961Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.1666,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:44:19.962Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T18:45:19.581Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:45:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:45:19.622Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.5866,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:45:19.623Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:45:19.642Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.4406,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:45:19.642Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:45:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.8481,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:45:19.651Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:45:19.674Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:45:19.683Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4961,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:45:19.684Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:45:19.691Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:45:19.709Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:45:19.717Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.8456,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:45:19.718Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:45:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.1836,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:45:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:45:19.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:45:19.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.1881,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:45:19.727Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:45:19.745Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.5521,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:45:19.746Z","event":"tenancy.ok","rid":null,"ms":37,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:45:19.752Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.889,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:45:19.754Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:45:19.758Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3308,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:45:19.760Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:45:19.767Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.386,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:45:19.768Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:45:19.786Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.3374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:45:19.787Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:45:19.806Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:45:19.820Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:45:19.824Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:45:19.832Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2012,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:45:19.833Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:45:19.841Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.024,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:45:19.841Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:45:19.850Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.988,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:45:19.851Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:45:19.852Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.7972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:45:19.852Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:45:19.883Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.1414,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:45:19.885Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:45:19.890Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.4147,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:45:19.891Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:45:19.901Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:45:19.929Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1349,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:45:19.930Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:45:19.964Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7021,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:45:19.965Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:46:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:46:19.620Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:46:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.7347,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:46:19.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:46:19.652Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3881,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:46:19.653Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:46:19.676Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:46:19.684Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.5345,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:46:19.685Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:46:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.9314,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:46:19.690Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:46:19.702Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2402,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:46:19.702Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:46:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:46:19.728Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.169,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:46:19.730Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:46:19.737Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:46:19.741Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:46:19.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:46:19.775Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.5749,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:46:19.776Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:46:19.777Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.1593,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:46:19.779Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:46:19.780Z","event":"tenants.lookup.exact.ok","rid":null,"ms":54.6417,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:46:19.781Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:46:19.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:46:19.805Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.8793,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:46:19.806Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:46:19.807Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.8342,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:46:19.807Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:46:19.809Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.5136,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:46:19.809Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:46:19.811Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5087,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:46:19.812Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:46:19.817Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8322,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:46:19.817Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:46:19.844Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.1007,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:46:19.845Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:46:19.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.2515,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:46:19.852Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:46:19.877Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:46:19.904Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:46:19.907Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.8363,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:46:19.908Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:46:19.922Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.8582,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:46:19.924Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:46:19.939Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.9628,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:46:19.941Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:46:19.965Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.6622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:46:19.966Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:47:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:47:19.615Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:47:19.660Z","event":"tenants.lookup.exact.ok","rid":null,"ms":57.1838,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:47:19.661Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:47:19.662Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.2063,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:47:19.662Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:47:19.679Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:47:19.697Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.2506,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:47:19.699Z","event":"tenancy.ok","rid":null,"ms":111,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:47:19.707Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.682,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:47:19.710Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:47:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:47:19.730Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.3111,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:47:19.731Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:47:19.756Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:47:19.758Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.689,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:47:19.759Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:47:19.761Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8661,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:47:19.762Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:47:19.771Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:47:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:47:19.788Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4086,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:47:19.789Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:47:19.790Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:47:19.791Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:47:19.805Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.5119,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:47:19.805Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:47:19.810Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:47:19.823Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.8153,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:47:19.824Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:47:19.827Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:47:19.828Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:47:19.833Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.5368,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:47:19.834Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:47:19.845Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.3035,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:47:19.846Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:47:19.851Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.6453,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:47:19.852Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:47:19.875Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:47:19.883Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.7317,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:47:19.884Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:47:19.890Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:47:19.903Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.0091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:47:19.904Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:47:19.905Z","event":"tenants.lookup.exact.ok","rid":null,"ms":13.6757,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:47:19.906Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:47:19.944Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.0967,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:47:19.946Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:47:19.952Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.3562,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:47:19.953Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:48:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:48:19.613Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:48:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.4044,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:48:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:48:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.5109,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:48:19.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:48:19.657Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.9016,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:48:19.659Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:48:19.680Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:48:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.1775,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:48:19.690Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:48:19.698Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:48:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:48:19.725Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:48:19.727Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.7842,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:48:19.729Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:48:19.747Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.6046,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:48:19.748Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:48:19.748Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.8103,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:48:19.749Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:48:19.766Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.8462,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:48:19.767Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:48:19.768Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.4291,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:48:19.768Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:48:19.790Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:48:19.806Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.4746,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:48:19.808Z","event":"tenancy.ok","rid":null,"ms":110,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:48:19.814Z","event":"tenants.lookup.default.ok","rid":null,"ms":65.1955,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:48:19.815Z","event":"tenancy.ok","rid":null,"ms":109,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:48:19.823Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.4658,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:48:19.824Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:48:19.833Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:48:19.838Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.0136,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:48:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:48:19.864Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:48:19.871Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.9525,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:48:19.872Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:48:19.874Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.7776,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:48:19.876Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:48:19.902Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.691,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:48:19.903Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:48:19.905Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.2874,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:48:19.906Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:48:19.942Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:48:19.971Z","event":"tenants.lookup.default.ok","rid":null,"ms":67.1649,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:48:19.972Z","event":"tenancy.ok","rid":null,"ms":108,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:48:19.996Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.0312,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:48:19.997Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:48:20.037Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.8729,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:48:20.038Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:49:19.579Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:49:19.596Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:49:19.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:49:19.683Z","event":"tenants.lookup.exact.ok","rid":null,"ms":89.1435,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:49:19.686Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:49:19.688Z","event":"tenants.lookup.exact.ok","rid":null,"ms":91.2103,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:49:19.690Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:49:19.707Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:49:19.710Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2748,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:49:19.711Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:49:19.713Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.7805,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:49:19.715Z","event":"tenancy.ok","rid":null,"ms":136,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:49:19.722Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.9049,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:49:19.725Z","event":"tenancy.ok","rid":null,"ms":129,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:49:19.745Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0994,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:49:19.746Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:49:19.753Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.4688,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:49:19.755Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:49:19.759Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:49:19.762Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:49:19.779Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:49:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:49:19.798Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.6593,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:49:19.800Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:49:19.806Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.8819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:49:19.807Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:49:19.810Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.8107,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:49:19.811Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:49:19.826Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:49:19.842Z","event":"tenants.lookup.exact.ok","rid":null,"ms":57.6684,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:49:19.843Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:49:19.844Z","event":"tenants.lookup.exact.ok","rid":null,"ms":63.5272,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:49:19.845Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:49:20.032Z","event":"tenants.lookup.default.ok","rid":null,"ms":222.5483,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:49:20.034Z","event":"tenancy.ok","rid":null,"ms":275,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:49:20.042Z","event":"tenants.lookup.default.ok","rid":null,"ms":230.7045,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:49:20.044Z","event":"tenancy.ok","rid":null,"ms":282,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:49:20.051Z","event":"tenants.lookup.exact.ok","rid":null,"ms":223.5708,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:49:20.052Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:49:20.054Z","event":"tenants.lookup.default.ok","rid":null,"ms":210.5988,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:49:20.055Z","event":"tenancy.ok","rid":null,"ms":273,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:49:20.063Z","event":"tenants.lookup.default.ok","rid":null,"ms":217.1817,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:49:20.064Z","event":"tenancy.ok","rid":null,"ms":285,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:49:20.100Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.8848,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:49:20.101Z","event":"tenancy.ok","rid":null,"ms":275,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:49:20.111Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:49:20.158Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.6074,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:49:20.159Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:49:20.200Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.7188,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:49:20.201Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T18:50:19.583Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:50:19.596Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:50:19.604Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.8766,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:50:19.605Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:50:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7066,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:50:19.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:50:19.627Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.1881,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:50:19.627Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:50:19.644Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.4182,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:50:19.645Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:50:19.651Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:50:19.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:50:19.681Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:50:19.684Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3352,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:50:19.685Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:50:19.708Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1877,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:50:19.710Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:50:19.711Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.8162,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:50:19.712Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:50:19.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.6113,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:50:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:50:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:50:19.744Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.9031,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:50:19.745Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:50:19.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.5983,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:50:19.750Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:50:19.759Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.0548,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:50:19.760Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:50:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:50:19.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.4794,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:50:19.786Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:50:19.796Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:50:19.816Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:50:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.493,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:50:19.818Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:50:19.820Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.7197,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:50:19.821Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:50:19.868Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.2667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:50:19.869Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:50:19.876Z","event":"tenants.lookup.exact.ok","rid":null,"ms":59.0661,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:50:19.877Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:50:19.878Z","event":"tenants.lookup.default.ok","rid":null,"ms":59.2387,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:50:19.879Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:50:19.900Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:50:19.907Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.8378,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:50:19.909Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:50:19.931Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.4173,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:50:19.932Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:50:19.968Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.1032,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:50:19.969Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:51:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:51:19.625Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:51:19.628Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.461,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:51:19.629Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:51:19.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.2535,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:51:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:51:19.652Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0411,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:51:19.652Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:51:19.677Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:51:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5737,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:51:19.690Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:51:19.695Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:51:19.710Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.9971,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:51:19.711Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:51:19.716Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:51:19.723Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.569,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:51:19.724Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:51:19.727Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:51:19.746Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.988,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:51:19.747Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:51:19.748Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.419,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:51:19.749Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:51:19.755Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.4348,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:51:19.756Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:51:19.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.6542,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:51:19.764Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:51:19.779Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:51:19.792Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:51:19.805Z","event":"tenants.lookup.default.ok","rid":null,"ms":57.7764,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:51:19.806Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:51:19.812Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.3145,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:51:19.813Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:51:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.7884,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:51:19.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:51:19.863Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:51:20.038Z","event":"tenants.lookup.exact.ok","rid":null,"ms":245.1647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:51:20.041Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:51:20.043Z","event":"tenants.lookup.default.ok","rid":null,"ms":221.8916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:51:20.045Z","event":"tenancy.ok","rid":null,"ms":266,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:51:20.056Z","event":"tenants.lookup.exact.ok","rid":null,"ms":191.896,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:51:20.057Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:51:20.064Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.1015,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:51:20.066Z","event":"tenancy.ok","rid":null,"ms":274,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:51:20.088Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.3449,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:51:20.089Z","event":"tenancy.ok","rid":null,"ms":226,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:51:20.117Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:51:20.146Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.3127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:51:20.147Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:51:20.167Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.8741,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:51:20.168Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:52:19.582Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:52:19.598Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:52:19.626Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5786,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:52:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:52:19.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7984,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:52:19.627Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:52:19.651Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.9273,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:52:19.653Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:52:19.657Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.542,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:52:19.658Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:52:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:52:19.715Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:52:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:52:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:52:19.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.1189,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:52:19.727Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:52:19.745Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.3389,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:52:19.747Z","event":"tenancy.ok","rid":null,"ms":41,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:52:19.753Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.4551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:52:19.754Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:52:19.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.082,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:52:19.756Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:52:19.757Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.5765,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:52:19.758Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:52:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:52:19.792Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:52:19.793Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4304,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:52:19.794Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:52:19.802Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2051,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:52:19.803Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:52:19.809Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.6817,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:52:19.810Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:52:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.8725,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:52:19.819Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:52:19.821Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.0247,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:52:19.821Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:52:19.834Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.1313,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:52:19.835Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:52:19.841Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:52:19.850Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.196,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:52:19.852Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:52:19.870Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.8608,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:52:19.871Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:52:19.878Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:52:19.905Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6403,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:52:19.905Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:52:19.909Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.7932,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:52:19.910Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:52:19.945Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6399,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:52:19.945Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:53:19.576Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:53:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:53:19.631Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.7299,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:53:19.632Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:53:19.634Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.0166,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:53:19.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:53:19.669Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:53:19.704Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:53:19.708Z","event":"tenants.lookup.default.ok","rid":null,"ms":74.4452,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:53:19.710Z","event":"tenancy.ok","rid":null,"ms":134,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:53:19.720Z","event":"tenants.lookup.default.ok","rid":null,"ms":84.4465,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:53:19.721Z","event":"tenancy.ok","rid":null,"ms":129,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:53:19.728Z","event":"tenants.lookup.exact.ok","rid":null,"ms":57.7651,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:53:19.730Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:53:19.735Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2508,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:53:19.736Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:53:19.746Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.0612,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:53:19.747Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:53:19.760Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:53:19.765Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:53:19.772Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3565,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:53:19.772Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:53:19.779Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:53:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:53:19.788Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.6494,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:53:19.789Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:53:19.790Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.5177,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:53:19.791Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:53:19.795Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:53:19.806Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.9411,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:53:19.807Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:53:19.812Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.5959,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:53:19.814Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:53:19.815Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.6206,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:53:19.817Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:53:19.819Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.6089,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:53:19.820Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:53:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.9892,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:53:19.825Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:53:19.830Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.6128,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:53:19.832Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:53:19.838Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.4573,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:53:19.839Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:53:19.845Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.6541,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:53:19.846Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:53:19.868Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:53:19.906Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.8697,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:53:19.908Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:53:19.945Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.6424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:53:19.946Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:54:19.583Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:54:19.600Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:54:19.677Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:54:19.717Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:54:19.732Z","event":"tenants.lookup.exact.ok","rid":null,"ms":134.424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:54:19.734Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:54:19.738Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.3065,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:54:19.739Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:54:19.741Z","event":"tenants.lookup.exact.ok","rid":null,"ms":139.2635,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:54:19.742Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:54:19.744Z","event":"tenants.lookup.exact.ok","rid":null,"ms":64.5138,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:54:19.746Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:54:19.766Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.4419,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:54:19.767Z","event":"tenancy.ok","rid":null,"ms":167,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:54:19.775Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.3266,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:54:19.777Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:54:19.785Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.9888,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:54:19.787Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:54:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":59.0365,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:54:19.796Z","event":"tenancy.ok","rid":null,"ms":213,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:54:19.823Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:54:19.848Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:54:19.852Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:54:19.855Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:54:19.857Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.306,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:54:19.858Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:54:19.903Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:54:20.088Z","event":"tenants.lookup.default.ok","rid":null,"ms":229.1271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:54:20.091Z","event":"tenancy.ok","rid":null,"ms":268,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:54:20.098Z","event":"tenants.lookup.exact.ok","rid":null,"ms":249.2255,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:54:20.100Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:54:20.102Z","event":"tenants.lookup.exact.ok","rid":null,"ms":246.2424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:54:20.103Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:54:20.105Z","event":"tenants.lookup.exact.ok","rid":null,"ms":252.0403,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:54:20.106Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:54:20.109Z","event":"tenants.lookup.exact.ok","rid":null,"ms":204.9997,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:54:20.110Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:54:20.132Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6291,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:54:20.133Z","event":"tenancy.ok","rid":null,"ms":285,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:54:20.139Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.378,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:54:20.139Z","event":"tenancy.ok","rid":null,"ms":236,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:54:20.152Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.4777,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:54:20.153Z","event":"tenancy.ok","rid":null,"ms":298,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:54:20.160Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.3722,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:54:20.162Z","event":"tenancy.ok","rid":null,"ms":309,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:54:20.174Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:54:20.208Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.9398,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:54:20.209Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:54:20.248Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.8485,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:54:20.249Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T18:55:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:55:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:55:19.626Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.7533,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:55:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:55:19.631Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.6671,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:55:19.631Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:55:19.666Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.4004,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:55:19.667Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:55:19.671Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.3908,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:55:19.673Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:55:19.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:55:19.707Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.462,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:55:19.708Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:55:19.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:55:19.715Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:55:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:55:19.745Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.1718,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:55:19.746Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:55:19.747Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.0651,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:55:19.747Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:55:19.750Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.2015,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:55:19.751Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:55:19.751Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1857,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:55:19.752Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:55:19.764Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:55:19.766Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.8045,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:55:19.767Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:55:19.773Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.9312,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:55:19.774Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:55:19.779Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.877,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:55:19.780Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:55:19.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:55:19.786Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.4814,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:55:19.787Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:55:19.800Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:55:19.806Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.6111,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:55:19.807Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:55:19.812Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.0116,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:55:19.812Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:55:19.830Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2586,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:55:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:55:19.834Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.2899,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:55:19.835Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:55:19.852Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:55:19.865Z","event":"tenants.lookup.exact.ok","rid":null,"ms":11.4308,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:55:19.865Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:55:19.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.5647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:55:19.867Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:55:19.907Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.6399,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:55:19.908Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:56:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:56:19.620Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:56:19.665Z","event":"tenants.lookup.exact.ok","rid":null,"ms":58.7253,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:56:19.666Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:56:19.667Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.6951,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:56:19.668Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:56:19.681Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:56:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:56:19.709Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.2876,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:56:19.711Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:56:19.718Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.1963,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:56:19.718Z","event":"tenancy.ok","rid":null,"ms":128,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:56:19.724Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.9221,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:56:19.725Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:56:19.764Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:56:19.766Z","event":"tenants.lookup.exact.ok","rid":null,"ms":58.8192,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:56:19.767Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:56:19.769Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.6144,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:56:19.770Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:56:19.781Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:56:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.7598,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:56:19.795Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:56:19.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.5041,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:56:19.803Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:56:19.812Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2852,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:56:19.813Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:56:19.844Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.5339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:56:19.845Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:56:19.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5037,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:56:19.852Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:56:19.872Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:56:19.918Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:56:19.924Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:56:19.929Z","event":"tenants.lookup.exact.ok","rid":null,"ms":55.7159,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:56:19.930Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:56:19.970Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.6035,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:56:19.972Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:56:20.013Z","event":"tenants.lookup.default.ok","rid":null,"ms":81.621,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:56:20.014Z","event":"tenancy.ok","rid":null,"ms":142,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:56:20.020Z","event":"tenants.lookup.exact.ok","rid":null,"ms":101.3832,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:56:20.022Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:56:20.024Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.6527,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:56:20.025Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:56:20.058Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.5519,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:56:20.060Z","event":"tenancy.ok","rid":null,"ms":142,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:56:20.074Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:56:20.107Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5314,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:56:20.109Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:56:20.131Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.9636,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:56:20.133Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:57:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:57:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:57:19.660Z","event":"tenants.lookup.exact.ok","rid":null,"ms":65.0053,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:57:19.661Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:57:19.670Z","event":"tenants.lookup.exact.ok","rid":null,"ms":58.8432,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:57:19.671Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:57:19.679Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:57:19.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:57:19.723Z","event":"tenants.lookup.default.ok","rid":null,"ms":60.8065,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:57:19.724Z","event":"tenancy.ok","rid":null,"ms":140,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:57:19.728Z","event":"tenants.lookup.default.ok","rid":null,"ms":56.9397,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:57:19.729Z","event":"tenancy.ok","rid":null,"ms":119,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:57:19.737Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.3867,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:57:19.738Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:57:19.765Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.1753,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:57:19.767Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:57:19.772Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:57:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:57:19.795Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.9349,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:57:19.796Z","event":"tenancy.ok","rid":null,"ms":117,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:57:19.805Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7072,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:57:19.806Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:57:19.808Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.3513,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:57:19.809Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:57:19.811Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.026,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:57:19.812Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:57:19.828Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.4786,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:57:19.829Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:57:19.837Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.9914,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:57:19.838Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:57:19.847Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:57:19.870Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.2102,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:57:19.871Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:57:19.908Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0874,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:57:19.909Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:57:19.926Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:57:19.931Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:57:19.953Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.7715,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:57:19.954Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:57:19.956Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4037,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:57:19.958Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:57:19.992Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.5689,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:57:19.993Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:57:20.001Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.0748,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:57:20.003Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:57:20.016Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:57:20.062Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.2347,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:57:20.063Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:57:20.120Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.8048,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:57:20.121Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:58:19.575Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:58:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:58:19.614Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.9022,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:58:19.615Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:58:19.652Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.6372,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:58:19.654Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:58:19.656Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.946,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:58:19.658Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:58:19.693Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:58:19.695Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.9698,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:58:19.696Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:58:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:58:19.727Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.8614,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:58:19.728Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:58:19.731Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:58:19.747Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.5873,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:58:19.748Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:58:19.753Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.4707,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:58:19.754Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:58:19.759Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.8509,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:58:19.760Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:58:19.779Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:58:19.784Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:58:19.793Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:58:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.685,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:58:19.795Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:58:19.801Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.9588,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:58:19.803Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:58:19.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5642,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:58:19.812Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:58:19.815Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.6239,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:58:19.816Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:58:19.818Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9041,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:58:19.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:58:19.855Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.533,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:58:19.856Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:58:19.860Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.8105,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:58:19.861Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:58:19.868Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.2497,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:58:19.870Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:58:19.878Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:58:19.912Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.0925,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:58:19.913Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:58:19.938Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:58:19.947Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2806,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:58:19.948Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:58:19.962Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.2674,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:58:19.963Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:58:19.977Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.1319,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:58:19.978Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:59:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:59:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:59:19.631Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4332,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:59:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:59:19.652Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.0919,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:59:19.653Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:59:19.656Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.3336,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:59:19.657Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:59:19.675Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:59:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:59:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.2483,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:59:19.690Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:59:19.696Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.4858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:59:19.697Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:59:19.711Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.6623,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:59:19.715Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:59:19.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:59:19.735Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:59:19.739Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.6451,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:59:19.740Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:59:19.747Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3793,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:59:19.749Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:59:19.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7747,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:59:19.756Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:59:19.763Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.8951,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:59:19.764Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:59:19.773Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.3056,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:59:19.774Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:59:19.785Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.1434,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:59:19.786Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:59:19.808Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:59:19.838Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:59:19.843Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.5617,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:59:19.844Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:59:19.850Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:59:19.863Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.8825,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:59:19.865Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:59:19.871Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.9845,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:59:19.871Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:59:19.872Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.4109,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:59:19.873Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:59:19.904Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.3819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:59:19.905Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:59:19.911Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.2977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:59:19.912Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T18:59:19.928Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T18:59:19.955Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.5861,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T18:59:19.956Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T18:59:19.987Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.355,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T18:59:19.988Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T19:00:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:00:19.616Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:00:19.619Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.6324,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:00:19.620Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:00:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.9531,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:00:19.654Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:00:19.655Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.8302,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:00:19.656Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:00:19.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.2508,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:00:19.675Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:00:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:00:19.729Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:00:19.731Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.804,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:00:19.733Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:00:19.741Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:00:19.759Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:00:19.781Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:00:19.795Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.2272,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:00:19.796Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:00:19.798Z","event":"tenants.lookup.exact.ok","rid":null,"ms":67.2457,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:00:19.799Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:00:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":65.2838,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:00:19.801Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:00:19.804Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.1068,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:00:19.805Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:00:19.816Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.6374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:00:19.817Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:00:19.825Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:00:19.835Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.7405,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:00:19.836Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:00:19.840Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.2207,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:00:19.840Z","event":"tenancy.ok","rid":null,"ms":111,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:00:19.843Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.1777,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:00:19.844Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:00:19.855Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.8971,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:00:19.856Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:00:19.857Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6813,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:00:19.858Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:00:19.870Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.2186,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:00:19.871Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:00:19.922Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:00:19.937Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:00:19.969Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5868,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:00:19.970Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:00:19.971Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.4782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:00:19.972Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:00:20.001Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6306,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:00:20.002Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:00:20.005Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5658,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:00:20.006Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:01:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:01:19.606Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:01:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6103,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:01:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:01:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.3376,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:01:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:01:19.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.6787,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:01:19.676Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:01:19.684Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.0183,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:01:19.685Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:01:19.692Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:01:19.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:01:19.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.899,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:01:19.714Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:01:19.727Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:01:19.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:01:19.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5702,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:01:19.750Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:01:19.756Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.1906,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:01:19.757Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:01:19.758Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:01:19.760Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:01:19.774Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.8692,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:01:19.775Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:01:19.781Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.0259,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:01:19.783Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:01:19.789Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5871,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:01:19.790Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:01:19.804Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.1899,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:01:19.805Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:01:19.812Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:01:19.840Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1038,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:01:19.841Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:01:19.857Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:01:19.877Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:01:19.883Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.6039,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:01:19.884Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:01:19.890Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.9133,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:01:19.891Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:01:19.911Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.8221,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:01:19.913Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:01:19.939Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:01:19.951Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.8301,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:01:19.952Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:01:19.957Z","event":"tenants.lookup.default.ok","rid":null,"ms":64.9483,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:01:19.958Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:01:19.979Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.7214,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:01:19.980Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:01:20.004Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:01:20.005Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:02:19.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:02:19.598Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:02:19.669Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:02:19.701Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:02:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:02:19.796Z","event":"tenants.lookup.exact.ok","rid":null,"ms":200.7153,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:02:19.797Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:02:19.799Z","event":"tenants.lookup.exact.ok","rid":null,"ms":199.833,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:02:19.800Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:02:19.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":130.7972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:02:19.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:02:19.804Z","event":"tenants.lookup.exact.ok","rid":null,"ms":102.4084,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:02:19.805Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:02:19.829Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.9647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:02:19.830Z","event":"tenancy.ok","rid":null,"ms":250,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:02:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.126,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:02:19.835Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:02:19.863Z","event":"tenants.lookup.default.ok","rid":null,"ms":62.6721,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:02:19.865Z","event":"tenancy.ok","rid":null,"ms":267,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:02:19.875Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:02:19.878Z","event":"tenants.lookup.default.ok","rid":null,"ms":74.4394,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:02:19.879Z","event":"tenancy.ok","rid":null,"ms":210,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:02:19.888Z","event":"tenants.lookup.default.ok","rid":null,"ms":82.0539,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:02:19.889Z","event":"tenancy.ok","rid":null,"ms":189,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:02:19.899Z","event":"tenants.lookup.default.ok","rid":null,"ms":63.6751,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:02:19.902Z","event":"tenancy.ok","rid":null,"ms":120,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:02:19.923Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.2848,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:02:19.924Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:02:19.949Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.0953,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:02:19.951Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:02:20.033Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:02:20.053Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:02:20.072Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:02:20.118Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:02:20.147Z","event":"tenants.lookup.exact.ok","rid":null,"ms":112.0856,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:02:20.149Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:02:20.150Z","event":"tenants.lookup.exact.ok","rid":null,"ms":95.9472,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:02:20.152Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:02:20.154Z","event":"tenants.lookup.exact.ok","rid":null,"ms":79.9393,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:02:20.155Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:02:20.158Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.5939,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:02:20.159Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:02:20.193Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.1253,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:02:20.196Z","event":"tenancy.ok","rid":null,"ms":163,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:02:20.209Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.1148,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:02:20.211Z","event":"tenancy.ok","rid":null,"ms":158,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:02:20.223Z","event":"tenants.lookup.default.ok","rid":null,"ms":66.3885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:02:20.225Z","event":"tenancy.ok","rid":null,"ms":153,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:02:20.235Z","event":"tenants.lookup.default.ok","rid":null,"ms":74.1415,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:02:20.236Z","event":"tenancy.ok","rid":null,"ms":118,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:03:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:03:19.630Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:03:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.4217,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:03:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:03:19.653Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.4199,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:03:19.654Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:03:19.662Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5475,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:03:19.663Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:03:19.683Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:03:19.695Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5218,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:03:19.698Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:03:19.728Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:03:19.745Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:03:19.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":65.0269,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:03:19.750Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:03:19.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.7404,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:03:19.764Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:03:19.777Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9641,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:03:19.779Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:03:19.780Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.493,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:03:19.781Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:03:19.790Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.6332,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:03:19.792Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:03:19.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:03:19.802Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.7653,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:03:19.803Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:03:19.817Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:03:19.853Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:03:19.854Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:03:19.855Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.9142,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:03:19.856Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:03:19.887Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7664,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:03:19.889Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:03:19.897Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.9651,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:03:19.898Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:03:19.922Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:03:19.949Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.2509,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:03:19.950Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:03:19.994Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.6329,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:03:19.997Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:03:20.118Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:03:20.150Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.9977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:03:20.151Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:03:20.181Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8508,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:03:20.182Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:03:20.229Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:03:20.259Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.9202,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:03:20.260Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:03:20.296Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.5688,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:03:20.297Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:04:19.578Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:04:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:04:19.683Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:04:19.725Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:04:19.757Z","event":"tenants.lookup.exact.ok","rid":null,"ms":164.9245,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:04:19.758Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:04:19.759Z","event":"tenants.lookup.exact.ok","rid":null,"ms":147.3638,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:04:19.759Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:04:19.761Z","event":"tenants.lookup.exact.ok","rid":null,"ms":74.444,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:04:19.761Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:04:19.761Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.5877,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:04:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:04:19.773Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.7757,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:04:19.774Z","event":"tenancy.ok","rid":null,"ms":196,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:04:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:04:19.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.9497,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:04:19.786Z","event":"tenancy.ok","rid":null,"ms":176,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:04:19.796Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.7821,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:04:19.797Z","event":"tenancy.ok","rid":null,"ms":114,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:04:19.807Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.668,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:04:19.808Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:04:19.821Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.0047,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:04:19.824Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:04:19.870Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.2945,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:04:19.871Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:04:19.901Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:04:19.913Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:04:19.941Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:04:19.952Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:04:20.003Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:04:20.026Z","event":"tenants.lookup.exact.ok","rid":null,"ms":112.4284,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:04:20.027Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:04:20.028Z","event":"tenants.lookup.exact.ok","rid":null,"ms":125.4633,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:04:20.029Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:04:20.030Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.284,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:04:20.031Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:04:20.032Z","event":"tenants.lookup.exact.ok","rid":null,"ms":78.6659,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:04:20.033Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:04:20.034Z","event":"tenants.lookup.exact.ok","rid":null,"ms":92.0581,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:04:20.035Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:04:20.043Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.3581,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:04:20.044Z","event":"tenancy.ok","rid":null,"ms":131,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:04:20.052Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.4597,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:04:20.053Z","event":"tenancy.ok","rid":null,"ms":112,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:04:20.061Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.8176,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:04:20.062Z","event":"tenancy.ok","rid":null,"ms":109,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:04:20.066Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6179,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:04:20.067Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:04:20.075Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.3116,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:04:20.076Z","event":"tenancy.ok","rid":null,"ms":175,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T19:05:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:05:19.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:05:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9678,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:05:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:05:19.659Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.7283,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:05:19.660Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:05:19.661Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3887,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:05:19.662Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:05:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:05:19.707Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.0559,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:05:19.709Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:05:19.738Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.3127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:05:19.740Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:05:19.745Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:05:19.750Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:05:19.764Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:05:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:05:19.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.947,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:05:19.786Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:05:19.791Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.6291,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:05:19.792Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:05:19.794Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.4934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:05:19.795Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:05:19.796Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7324,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:05:19.797Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:05:19.809Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:05:19.812Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5601,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:05:19.813Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:05:19.814Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.9359,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:05:19.815Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:05:19.820Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.884,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:05:19.822Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:05:19.830Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4368,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:05:19.832Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:05:19.840Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9656,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:05:19.841Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:05:19.843Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.1351,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:05:19.844Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:05:19.872Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:05:19.873Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1263,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:05:19.874Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:05:19.881Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:05:19.891Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.489,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:05:19.892Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:05:19.919Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.1202,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:05:19.921Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:05:19.922Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.921,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:05:19.923Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:05:19.952Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.0414,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:05:19.954Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:06:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:06:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:06:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.8517,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:06:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:06:19.643Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.0352,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:06:19.645Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:06:19.652Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8163,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:06:19.654Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:06:19.679Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:06:19.680Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.1664,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:06:19.682Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:06:19.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:06:19.717Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:06:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.7141,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:06:19.722Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:06:19.723Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1921,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:06:19.724Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:06:19.738Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:06:19.740Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.8449,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:06:19.741Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:06:19.767Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.2544,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:06:19.768Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:06:19.772Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.5124,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:06:19.773Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:06:19.776Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.4393,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:06:19.777Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:06:19.778Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.1543,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:06:19.778Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:06:19.784Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:06:19.798Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.8648,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:06:19.800Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:06:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.2746,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:06:19.813Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:06:19.823Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:06:19.834Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:06:19.837Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.8589,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:06:19.838Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:06:19.870Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.7072,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:06:19.872Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:06:19.874Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.4901,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:06:19.887Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:06:19.904Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4921,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:06:19.906Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:06:19.923Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.5788,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:06:19.929Z","event":"tenancy.ok","rid":null,"ms":106,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:06:20.004Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:06:20.059Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.7328,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:06:20.060Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:06:20.099Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.275,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:06:20.100Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:07:19.595Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:07:19.628Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:07:19.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.2826,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:07:19.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:07:19.671Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:07:19.688Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.7336,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:07:19.688Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:07:19.692Z","event":"tenants.lookup.exact.ok","rid":null,"ms":61.6846,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:07:19.693Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:07:19.703Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.8588,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:07:19.704Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:07:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:07:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:07:19.738Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.584,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:07:19.739Z","event":"tenancy.ok","rid":null,"ms":111,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:07:19.741Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.251,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:07:19.741Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:07:19.747Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.4117,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:07:19.748Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:07:19.765Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.8998,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:07:19.766Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:07:19.786Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4598,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:07:19.787Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:07:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.2143,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:07:19.805Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:07:19.813Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:07:19.837Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.5704,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:07:19.838Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:07:19.845Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:07:19.849Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:07:19.877Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7528,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:07:19.878Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:07:19.879Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.5597,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:07:19.880Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:07:19.881Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.6027,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:07:19.883Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:07:19.904Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:07:19.916Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.0555,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:07:19.919Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:07:19.924Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.6801,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:07:19.926Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:07:19.934Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.9877,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:07:19.934Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:07:19.939Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:07:19.961Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.8777,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:07:19.962Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:07:19.968Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.6858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:07:19.969Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:07:19.993Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.2356,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:07:19.993Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:08:19.602Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:08:19.620Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:08:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:08:19.709Z","event":"tenants.lookup.exact.ok","rid":null,"ms":88.8832,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:08:19.711Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:08:19.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":95.7657,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:08:19.714Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:08:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:08:19.733Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.8381,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:08:19.734Z","event":"tenancy.ok","rid":null,"ms":132,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:08:19.736Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.628,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:08:19.736Z","event":"tenancy.ok","rid":null,"ms":116,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:08:19.742Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.7653,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:08:19.744Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:08:19.745Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.0293,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:08:19.746Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:08:19.774Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.8499,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:08:19.775Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:08:19.781Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.8642,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:08:19.783Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:08:19.790Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:08:19.792Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:08:19.797Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:08:19.817Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:08:19.821Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5677,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:08:19.822Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:08:19.824Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.8608,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:08:19.825Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:08:19.826Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4194,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:08:19.827Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:08:19.832Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:08:19.848Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.4999,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:08:19.849Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:08:19.850Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.3389,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:08:19.851Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:08:19.858Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3809,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:08:19.859Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:08:19.865Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.4769,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:08:19.866Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:08:19.872Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.6433,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:08:19.873Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:08:19.886Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.0175,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:08:19.888Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:08:19.901Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.8084,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:08:19.902Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:08:19.985Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:08:20.014Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.1609,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:08:20.015Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:08:20.048Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0577,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:08:20.049Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:09:19.595Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:09:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:09:19.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.895,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:09:19.637Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:09:19.638Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.9572,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:09:19.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:09:19.679Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.259,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:09:19.681Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:09:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.8946,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:09:19.692Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:09:19.710Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:09:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.6682,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:09:19.736Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:09:19.757Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:09:19.769Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:09:19.773Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:09:19.776Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.4278,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:09:19.778Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:09:19.801Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:09:19.814Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:09:20.017Z","event":"tenants.lookup.exact.ok","rid":null,"ms":259.1996,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:09:20.019Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:09:20.021Z","event":"tenants.lookup.exact.ok","rid":null,"ms":250.6095,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:09:20.021Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:09:20.023Z","event":"tenants.lookup.exact.ok","rid":null,"ms":221.292,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:09:20.024Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:09:20.027Z","event":"tenants.lookup.exact.ok","rid":null,"ms":252.0862,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:09:20.028Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:09:20.031Z","event":"tenants.lookup.exact.ok","rid":null,"ms":215.8327,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:09:20.032Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:09:20.053Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:09:20.055Z","event":"tenancy.ok","rid":null,"ms":298,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:09:20.063Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.8034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:09:20.066Z","event":"tenancy.ok","rid":null,"ms":297,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:09:20.073Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.3032,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:09:20.077Z","event":"tenancy.ok","rid":null,"ms":276,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:09:20.088Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.8942,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:09:20.090Z","event":"tenancy.ok","rid":null,"ms":276,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:09:20.098Z","event":"tenants.lookup.default.ok","rid":null,"ms":68.6386,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:09:20.100Z","event":"tenancy.ok","rid":null,"ms":327,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:09:20.177Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:09:20.183Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:09:20.445Z","event":"tenants.lookup.exact.ok","rid":null,"ms":267.2627,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:09:20.461Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:09:20.464Z","event":"tenants.lookup.exact.ok","rid":null,"ms":280.3215,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:09:20.466Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:09:20.494Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.6756,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:09:20.496Z","event":"tenancy.ok","rid":null,"ms":313,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:09:20.503Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.5052,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:09:20.504Z","event":"tenancy.ok","rid":null,"ms":328,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T19:10:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:10:19.607Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:10:19.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.6338,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:10:19.640Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:10:19.642Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.0092,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:10:19.643Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:10:19.676Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.1993,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:10:19.677Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:10:19.687Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.586,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:10:19.688Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:10:19.707Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:10:19.729Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.7668,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:10:19.731Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:10:19.748Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:10:19.754Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.8341,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:10:19.756Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:10:19.763Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:10:19.768Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.4263,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:10:19.769Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:10:19.775Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:10:19.796Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:10:19.798Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.3035,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:10:19.799Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:10:19.800Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.5959,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:10:19.801Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:10:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5154,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:10:19.804Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:10:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.0324,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:10:19.814Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:10:19.821Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:10:19.829Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.1843,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:10:19.830Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:10:19.836Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.9969,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:10:19.837Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:10:19.843Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.1742,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:10:19.845Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:10:19.850Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.3028,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:10:19.851Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:10:19.862Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:10:19.869Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.6028,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:10:19.871Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:10:19.889Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.7362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:10:19.890Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:10:19.912Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.8319,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:10:19.913Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:10:19.921Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:10:19.953Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7581,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:10:19.954Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:10:19.989Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6182,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:10:19.991Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:11:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:11:19.625Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:11:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.6015,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:11:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:11:19.666Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.4452,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:11:19.667Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:11:19.681Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:11:19.701Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.9639,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:11:19.702Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:11:19.704Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8232,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:11:19.705Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:11:19.716Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:11:19.732Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:11:19.748Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.7225,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:11:19.749Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:11:19.754Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.4735,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:11:19.755Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:11:19.761Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.9422,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:11:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:11:19.781Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:11:19.786Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.3825,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:11:19.787Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:11:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1926,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:11:19.795Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:11:19.804Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:11:19.832Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.5948,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:11:19.834Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:11:19.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.0306,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:11:19.837Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:11:19.860Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.3773,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:11:19.862Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:11:19.894Z","event":"tenants.lookup.default.ok","rid":null,"ms":60.0206,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:11:19.897Z","event":"tenancy.ok","rid":null,"ms":116,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:11:19.913Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:11:20.034Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:11:20.063Z","event":"tenants.lookup.default.ok","rid":null,"ms":416.3687,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:11:20.064Z","event":"tenancy.ok","rid":null,"ms":476,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:11:20.068Z","event":"tenants.lookup.exact.ok","rid":null,"ms":154.1303,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:11:20.069Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:11:20.096Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.8804,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:11:20.099Z","event":"tenancy.ok","rid":null,"ms":186,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:11:20.121Z","event":"tenants.lookup.exact.ok","rid":null,"ms":84.6418,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:11:20.127Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:11:20.160Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.7337,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:11:20.163Z","event":"tenancy.ok","rid":null,"ms":129,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:11:20.284Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:11:20.371Z","event":"tenants.lookup.exact.ok","rid":null,"ms":85.7917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:11:20.373Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:11:20.410Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.3093,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:11:20.411Z","event":"tenancy.ok","rid":null,"ms":127,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:12:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:12:19.622Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:12:19.638Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.3093,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:12:19.639Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:12:19.657Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.9488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:12:19.657Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:12:19.658Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.7523,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:12:19.659Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:12:19.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:12:19.692Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:12:19.703Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:12:19.733Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:12:19.742Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.9947,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:12:19.743Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:12:19.750Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:12:19.775Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.7809,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:12:19.776Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:12:19.780Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.7271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:12:19.781Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:12:19.782Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.4336,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:12:19.783Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:12:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:12:19.795Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:12:19.816Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.9286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:12:19.817Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:12:19.818Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.145,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:12:19.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:12:19.821Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.741,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:12:19.823Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:12:19.830Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.0179,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:12:19.831Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:12:19.839Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:12:19.855Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.2334,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:12:19.856Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:12:19.861Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.8971,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:12:19.862Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:12:19.868Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4277,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:12:19.869Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:12:19.896Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.9578,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:12:19.897Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:12:19.915Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:12:19.939Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:12:19.941Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.3847,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:12:19.942Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:12:19.974Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5903,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:12:19.976Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:12:19.980Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.328,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:12:19.981Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:12:20.010Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.5672,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:12:20.011Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:13:19.581Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:13:19.628Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:13:19.642Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.7091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:13:19.643Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:13:19.656Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4639,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:13:19.657Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:13:19.658Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.8859,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:13:19.658Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:13:19.675Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.7198,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:13:19.676Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:13:19.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:13:19.712Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:13:19.715Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:13:19.717Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.175,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:13:19.718Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:13:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:13:19.736Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.3875,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:13:19.737Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:13:19.738Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.4181,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:13:19.738Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:13:19.739Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.5068,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:13:19.740Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:13:19.763Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.111,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:13:19.763Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:13:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:13:19.784Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:13:19.954Z","event":"tenants.lookup.default.ok","rid":null,"ms":216.4788,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:13:19.956Z","event":"tenancy.ok","rid":null,"ms":244,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:13:19.962Z","event":"tenants.lookup.exact.ok","rid":null,"ms":181.3712,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:13:19.963Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:13:19.965Z","event":"tenants.lookup.exact.ok","rid":null,"ms":179.2241,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:13:19.966Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:13:19.968Z","event":"tenants.lookup.default.ok","rid":null,"ms":229.3782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:13:19.970Z","event":"tenancy.ok","rid":null,"ms":255,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:13:19.978Z","event":"tenants.lookup.default.ok","rid":null,"ms":213.966,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:13:19.980Z","event":"tenancy.ok","rid":null,"ms":254,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:13:20.000Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.4335,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:13:20.003Z","event":"tenancy.ok","rid":null,"ms":223,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:13:20.014Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.301,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:13:20.016Z","event":"tenancy.ok","rid":null,"ms":232,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:13:20.104Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:13:20.108Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:13:20.291Z","event":"tenants.lookup.exact.ok","rid":null,"ms":182.4241,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:13:20.292Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:13:20.298Z","event":"tenants.lookup.exact.ok","rid":null,"ms":192.151,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:13:20.300Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:13:20.318Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.2737,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:13:20.319Z","event":"tenancy.ok","rid":null,"ms":215,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:13:20.324Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5101,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:13:20.325Z","event":"tenancy.ok","rid":null,"ms":217,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:14:19.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:14:19.618Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:14:19.620Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.7567,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:14:19.621Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:14:19.655Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0111,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:14:19.656Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:14:19.659Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.7702,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:14:19.659Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:14:19.671Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:14:19.697Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.7794,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:14:19.698Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:14:19.704Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.6597,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:14:19.705Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:14:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:14:19.737Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:14:19.738Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.1102,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:14:19.740Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:14:19.745Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.2448,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:14:19.747Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:14:19.758Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:14:19.771Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:14:19.772Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:14:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:14:19.779Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:14:19.781Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.1704,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:14:19.782Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:14:19.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4583,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:14:19.785Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:14:19.796Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.3898,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:14:19.797Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:14:19.798Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:14:19.799Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:14:19.801Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.3881,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:14:19.802Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:14:19.808Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.9645,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:14:19.810Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:14:19.817Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.0575,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:14:19.818Z","event":"tenancy.ok","rid":null,"ms":39,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:14:19.824Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.7839,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:14:19.825Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:14:19.894Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:14:19.903Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:14:19.913Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.6071,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:14:19.914Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:14:19.932Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9151,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:14:19.933Z","event":"tenancy.ok","rid":null,"ms":39,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:14:19.938Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1208,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:14:19.938Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:14:19.971Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7905,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:14:19.971Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T19:15:19.595Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:15:19.618Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:15:19.621Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.498,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:15:19.622Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:15:19.650Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6617,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:15:19.651Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:15:19.666Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.1423,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:15:19.666Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:15:19.682Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6525,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:15:19.683Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:15:19.698Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:15:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.0995,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:15:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:15:19.736Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:15:19.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:15:19.741Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.0246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:15:19.743Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:15:19.755Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:15:19.771Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.3613,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:15:19.772Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:15:19.775Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:15:19.778Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:15:19.783Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.0399,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:15:19.784Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:15:19.785Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.1333,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:15:19.786Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:15:19.791Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.0679,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:15:19.792Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:15:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.5391,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:15:19.795Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:15:19.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.7283,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:15:19.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:15:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.5491,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:15:19.804Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:15:19.809Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.295,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:15:19.811Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:15:19.818Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.4778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:15:19.820Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:15:19.826Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.3189,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:15:19.827Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:15:19.899Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:15:19.914Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:15:19.931Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.9339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:15:19.932Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:15:19.936Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.3782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:15:19.937Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:15:19.951Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.616,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:15:19.952Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:15:19.957Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.0799,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:15:19.958Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:16:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:16:19.605Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:16:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.5024,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:16:19.643Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:16:19.645Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.9875,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:16:19.646Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:16:19.677Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.4183,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:16:19.679Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:16:19.687Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.1658,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:16:19.688Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:16:19.703Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:16:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":13.3343,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:16:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:16:19.746Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:16:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.9289,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:16:19.759Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:16:19.777Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.1641,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:16:19.778Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:16:19.781Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:16:19.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:16:19.798Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:16:19.809Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:16:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.6187,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:16:19.818Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:16:19.819Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.3129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:16:19.820Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:16:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.7818,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:16:19.826Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:16:19.827Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.0611,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:16:19.828Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:16:19.836Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9706,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:16:19.838Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:16:19.843Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.9127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:16:19.844Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:16:19.845Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.1718,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:16:19.845Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:16:19.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.9897,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:16:19.852Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:16:19.859Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:16:19.879Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.2099,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:16:19.880Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:16:19.885Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.0807,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:16:19.886Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:16:19.922Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.9556,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:16:19.923Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:16:19.955Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:16:19.977Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.7777,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:16:19.978Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:16:20.016Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.2829,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:16:20.016Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:17:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:17:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:17:19.642Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.9339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:17:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:17:19.645Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.3934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:17:19.646Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:17:19.676Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:17:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.3655,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:17:19.690Z","event":"tenancy.ok","rid":null,"ms":106,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:17:19.694Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.5833,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:17:19.695Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:17:19.716Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.6156,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:17:19.716Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:17:19.743Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:17:19.748Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:17:19.750Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6905,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:17:19.751Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:17:19.760Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:17:19.775Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.0348,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:17:19.776Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:17:19.777Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:17:19.778Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:17:19.780Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.9368,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:17:19.780Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:17:19.783Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:17:19.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:17:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.5886,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:17:19.795Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:17:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.217,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:17:19.801Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:17:19.807Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.3496,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:17:19.808Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:17:19.816Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5984,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:17:19.816Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:17:19.818Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:17:19.819Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:17:19.837Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.6308,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:17:19.838Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:17:19.843Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.3145,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:17:19.844Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:17:19.872Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:17:19.884Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:17:19.893Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.7729,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:17:19.894Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:17:19.919Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.8199,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:17:19.920Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:17:19.921Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.0613,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:17:19.923Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:17:19.932Z","event":"tenants.lookup.default.ok","rid":null,"ms":11.0759,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:17:19.933Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:18:19.573Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:18:19.608Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:18:19.667Z","event":"tenants.lookup.exact.ok","rid":null,"ms":78.5469,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:18:19.668Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:18:19.669Z","event":"tenants.lookup.exact.ok","rid":null,"ms":59.0456,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:18:19.669Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:18:19.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:18:19.693Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.0353,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:18:19.695Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:18:19.703Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1314,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:18:19.707Z","event":"tenancy.ok","rid":null,"ms":134,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:18:19.717Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.6398,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:18:19.718Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:18:19.738Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:18:19.740Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:18:19.767Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:18:19.792Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:18:19.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.9273,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:18:19.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:18:19.804Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:18:19.807Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:18:19.814Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:18:20.599Z","event":"tenants.lookup.exact.ok","rid":null,"ms":805.8471,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:18:20.613Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:18:20.614Z","event":"tenants.lookup.default.ok","rid":null,"ms":811.7549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:18:20.615Z","event":"tenancy.ok","rid":null,"ms":848,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:18:20.621Z","event":"tenants.lookup.exact.ok","rid":null,"ms":815.3856,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:18:20.622Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:18:20.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":815.771,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:18:20.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:18:20.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":811.6654,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:18:20.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:18:20.643Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.8194,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:18:20.645Z","event":"tenancy.ok","rid":null,"ms":837,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:18:20.655Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.4,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:18:20.657Z","event":"tenancy.ok","rid":null,"ms":852,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:18:20.665Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.4847,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:18:20.667Z","event":"tenancy.ok","rid":null,"ms":875,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:18:20.677Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.0481,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:18:20.678Z","event":"tenancy.ok","rid":null,"ms":864,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:18:20.730Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:18:20.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:18:20.916Z","event":"tenants.lookup.exact.ok","rid":null,"ms":184.983,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:18:20.918Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:18:20.919Z","event":"tenants.lookup.exact.ok","rid":null,"ms":178.3099,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:18:20.920Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:18:20.945Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.5538,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:18:20.946Z","event":"tenancy.ok","rid":null,"ms":216,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:18:20.954Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0174,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:18:20.955Z","event":"tenancy.ok","rid":null,"ms":215,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:19:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:19:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:19:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.5457,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:19:19.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:19:19.657Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0196,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:19:19.658Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:19:19.661Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.1745,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:19:19.661Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:19:19.687Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:19:19.698Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.5081,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:19:19.700Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:19:19.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:19:19.741Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:19:19.752Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:19:19.766Z","event":"tenants.lookup.exact.ok","rid":null,"ms":77.7368,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:19:19.767Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:19:19.768Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.5147,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:19:19.769Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:19:19.771Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.0054,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:19:19.771Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:19:19.773Z","event":"tenants.lookup.exact.ok","rid":null,"ms":60.2161,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:19:19.773Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:19:19.777Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:19:19.798Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.8084,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:19:19.799Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:19:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.289,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:19:19.804Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:19:19.808Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.6309,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:19:19.808Z","event":"tenancy.ok","rid":null,"ms":121,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:19:19.812Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5047,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:19:19.813Z","event":"tenancy.ok","rid":null,"ms":102,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:19:19.816Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.1849,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:19:19.817Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:19:19.857Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.4658,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:19:19.858Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:19:19.865Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:19:19.870Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:19:19.899Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:19:19.919Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.9723,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:19:19.920Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:19:19.921Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.3979,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:19:19.922Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:19:19.950Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.5168,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:19:19.952Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:19:19.983Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.7953,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:19:19.983Z","event":"tenancy.ok","rid":null,"ms":118,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:19:19.991Z","event":"tenants.lookup.default.ok","rid":null,"ms":67.5358,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:19:19.992Z","event":"tenancy.ok","rid":null,"ms":122,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:19:20.000Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.3844,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:19:20.003Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T19:20:19.585Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:20:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:20:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.9345,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:20:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:20:19.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.9628,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:20:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:20:19.670Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:20:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.9865,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:20:19.687Z","event":"tenancy.ok","rid":null,"ms":102,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:20:19.690Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.2023,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:20:19.690Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:20:19.706Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.6343,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:20:19.707Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:20:19.719Z","event":"tenants.lookup.default.ok","rid":null,"ms":11.5151,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:20:19.720Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:20:19.728Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:20:19.738Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:20:19.755Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:20:19.758Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.5478,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:20:19.759Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:20:19.761Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.6723,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:20:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:20:19.765Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:20:19.781Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.2305,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:20:19.782Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:20:19.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.9632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:20:19.785Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:20:19.790Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.1621,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:20:19.791Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:20:19.796Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:20:19.798Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7557,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:20:19.798Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:20:19.814Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:20:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.166,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:20:19.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:20:19.821Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5372,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:20:19.822Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:20:19.827Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7318,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:20:19.828Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:20:19.841Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.1171,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:20:19.842Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:20:19.844Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.1471,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:20:19.845Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:20:19.886Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.9931,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:20:19.887Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:20:19.910Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:20:19.938Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7586,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:20:19.939Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:20:19.977Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.4815,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:20:19.978Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:21:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:21:19.620Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:21:19.681Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:21:19.704Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:21:19.759Z","event":"tenants.lookup.exact.ok","rid":null,"ms":155.606,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:21:19.759Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:21:19.760Z","event":"tenants.lookup.exact.ok","rid":null,"ms":138.4067,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:21:19.761Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:21:19.761Z","event":"tenants.lookup.exact.ok","rid":null,"ms":78.0713,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:21:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:21:19.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.9895,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:21:19.763Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:21:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:21:19.793Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6404,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:21:19.794Z","event":"tenancy.ok","rid":null,"ms":207,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:21:19.796Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.2304,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:21:19.797Z","event":"tenancy.ok","rid":null,"ms":177,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:21:19.804Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.5278,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:21:19.805Z","event":"tenancy.ok","rid":null,"ms":124,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:21:19.808Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.1124,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:21:19.809Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:21:19.815Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7161,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:21:19.817Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:21:19.846Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.1168,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:21:19.857Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:21:19.866Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:21:19.870Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:21:19.873Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:21:19.875Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:21:19.977Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:21:20.301Z","event":"tenants.lookup.exact.ok","rid":null,"ms":433.2662,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:21:20.314Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:21:20.317Z","event":"tenants.lookup.exact.ok","rid":null,"ms":446.349,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:21:20.319Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:21:20.356Z","event":"tenants.lookup.exact.ok","rid":null,"ms":482.8305,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:21:20.357Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:21:20.371Z","event":"tenants.lookup.exact.ok","rid":null,"ms":495.2636,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:21:20.372Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:21:20.487Z","event":"tenants.lookup.exact.ok","rid":null,"ms":510.0125,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:21:20.490Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:21:20.492Z","event":"tenants.lookup.default.ok","rid":null,"ms":119.4999,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:21:20.493Z","event":"tenancy.ok","rid":null,"ms":618,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:21:20.503Z","event":"tenants.lookup.default.ok","rid":null,"ms":186.9336,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:21:20.505Z","event":"tenancy.ok","rid":null,"ms":638,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:21:20.515Z","event":"tenants.lookup.default.ok","rid":null,"ms":155.9358,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:21:20.518Z","event":"tenancy.ok","rid":null,"ms":645,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:21:20.529Z","event":"tenants.lookup.default.ok","rid":null,"ms":208.8947,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:21:20.531Z","event":"tenancy.ok","rid":null,"ms":661,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:21:20.542Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.8922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:21:20.544Z","event":"tenancy.ok","rid":null,"ms":567,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:22:19.586Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:22:19.620Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.4987,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:22:19.621Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:22:19.631Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:22:19.640Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9653,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:22:19.642Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:22:19.659Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5325,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:22:19.660Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:22:19.675Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:22:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:22:19.703Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.4261,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:22:19.704Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:22:19.708Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7544,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:22:19.708Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:22:19.709Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.5768,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:22:19.710Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:22:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:22:19.743Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.9232,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:22:19.744Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:22:19.751Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.3604,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:22:19.752Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:22:19.753Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.9059,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:22:19.754Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:22:19.761Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:22:19.775Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.6458,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:22:19.776Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:22:19.784Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.1821,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:22:19.785Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:22:19.828Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.867,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:22:19.829Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:22:19.845Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:22:19.858Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:22:19.860Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.2732,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:22:19.862Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:22:19.867Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:22:19.876Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.1883,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:22:19.877Z","event":"tenancy.ok","rid":null,"ms":32,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:22:19.883Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.0108,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:22:19.884Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:22:19.898Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9769,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:22:19.899Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:22:19.903Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.2918,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:22:19.904Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:22:19.914Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.4944,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:22:19.916Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:22:19.975Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:22:19.995Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.2276,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:22:19.996Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:22:20.015Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.5176,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:22:20.016Z","event":"tenancy.ok","rid":null,"ms":41,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:23:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:23:19.621Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:23:19.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.6016,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:23:19.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:23:19.652Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3161,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:23:19.653Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:23:19.687Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:23:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.754,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:23:19.691Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:23:19.700Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.3743,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:23:19.702Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:23:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3337,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:23:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:23:19.737Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:23:19.740Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.3796,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:23:19.742Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:23:19.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.6207,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:23:19.756Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:23:19.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.7019,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:23:19.785Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:23:19.793Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:23:19.796Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:23:19.803Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:23:19.805Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:23:19.821Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:23:19.822Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:23:19.823Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.7282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:23:19.824Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:23:19.826Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.0789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:23:19.827Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:23:19.828Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.2062,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:23:19.829Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:23:19.856Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:23:19.857Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:23:19.863Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.9098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:23:19.864Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:23:19.869Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.4908,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:23:19.870Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:23:19.878Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.765,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:23:19.879Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:23:19.886Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:23:19.907Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.9964,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:23:19.908Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:23:19.935Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.5992,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:23:19.936Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:23:19.959Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:23:19.979Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.4493,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:23:19.980Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:23:20.025Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.3917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:23:20.026Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:24:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:24:19.611Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:24:19.622Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.5852,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:24:19.623Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:24:19.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.7662,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:24:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:24:19.660Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:24:19.662Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:24:19.667Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.1917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:24:19.669Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:24:19.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:24:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:24:19.709Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5573,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:24:19.711Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:24:19.716Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:24:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:24:19.747Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.6334,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:24:19.748Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:24:19.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.8416,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:24:19.750Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:24:19.752Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.219,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:24:19.753Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:24:19.757Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.0397,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:24:19.759Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:24:19.788Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:24:19.789Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.605,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:24:19.791Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:24:19.799Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.5152,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:24:19.800Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:24:19.804Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.8137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:24:19.805Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:24:19.818Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:24:19.821Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.9878,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:24:19.821Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:24:19.835Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.6952,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:24:19.836Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:24:19.842Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.2405,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:24:19.844Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:24:19.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6615,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:24:19.867Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:24:19.884Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:24:19.912Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:24:19.913Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:24:19.936Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.9286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:24:19.937Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:24:19.954Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:24:19.982Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.5341,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:24:19.983Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:24:19.998Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.443,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:24:19.999Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T19:25:19.596Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:25:19.621Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:25:19.652Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.3315,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:25:19.653Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:25:19.654Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3386,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:25:19.655Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:25:19.680Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:25:19.683Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.2564,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:25:19.684Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:25:19.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1735,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:25:19.693Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:25:19.701Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.0965,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:25:19.702Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:25:19.721Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.3651,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:25:19.723Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:25:19.748Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:25:19.762Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:25:19.765Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:25:19.776Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.679,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:25:19.777Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:25:19.780Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.5257,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:25:19.781Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:25:19.783Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.8535,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:25:19.784Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:25:19.787Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:25:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.0471,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:25:19.804Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:25:19.810Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:25:19.811Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:25:19.817Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.2382,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:25:19.818Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:25:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.5499,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:25:19.826Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:25:19.828Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:25:19.845Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.441,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:25:19.846Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:25:19.856Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.1052,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:25:19.858Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:25:19.876Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.0424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:25:19.877Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:25:19.883Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:25:19.915Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5427,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:25:19.916Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:25:19.923Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:25:19.936Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.845,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:25:19.938Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:25:19.944Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.7533,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:25:19.945Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:25:19.976Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.295,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:25:19.977Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:26:19.625Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:19.676Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.2518,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:19.678Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:19.719Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:19.752Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:19.760Z","event":"tenants.lookup.default.ok","rid":null,"ms":81.2448,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:19.761Z","event":"tenancy.ok","rid":null,"ms":136,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:26:19.769Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.5483,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:19.770Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:19.784Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5032,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:19.785Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:19.813Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.3137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:19.814Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:26:19.828Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.1635,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:19.829Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:19.831Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.7348,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:19.832Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:26:19.876Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:19.877Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:26:19.923Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:19.973Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.0279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:19.974Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:20.014Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.936,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:20.015Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:26:20.063Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:20.112Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.1677,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:20.114Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:20.151Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8493,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:20.153Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:26:20.201Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:20.220Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:20.241Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.2135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:20.243Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:20.259Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:20.262Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.4142,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:20.263Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:20.273Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6775,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:20.274Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:26:20.299Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.3411,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:20.300Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:20.304Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:20.306Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.0137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:20.308Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:26:20.324Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.8895,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:20.326Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:26:20.336Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5024,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:20.337Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:20.374Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.2405,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:20.376Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:26:35.837Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:35.863Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1895,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:35.864Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:35.902Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9978,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:35.903Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [ROOT] Handler reached for host: localhost:3000
[DEBUG] [SPA] buildSpa called for path: /
[SPA] Building for path: /
[DEBUG] [SEO] applyThemeAndSeo called for path: /
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /
[DEBUG] [SEO] fetchSeoMeta done: meta=true, links=4
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T19:26:36.190Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:36.198Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:36.202Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:36.204Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:36.229Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.8129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:36.230Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:36.464Z","event":"tenants.lookup.exact.ok","rid":null,"ms":265.8234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:36.478Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:36.481Z","event":"tenants.lookup.exact.ok","rid":null,"ms":277.6513,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:36.482Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:36.485Z","event":"tenants.lookup.exact.ok","rid":null,"ms":279.1465,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:36.486Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:36.489Z","event":"tenants.lookup.default.ok","rid":null,"ms":258.1834,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:36.491Z","event":"tenancy.ok","rid":null,"ms":301,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:36.973Z","event":"tenants.lookup.default.ok","rid":null,"ms":493.3905,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:36.974Z","event":"tenancy.ok","rid":null,"ms":776,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:36.986Z","event":"tenants.lookup.default.ok","rid":null,"ms":502.1789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:36.987Z","event":"tenancy.ok","rid":null,"ms":785,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:37.004Z","event":"tenants.lookup.default.ok","rid":null,"ms":516.4632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:37.006Z","event":"tenancy.ok","rid":null,"ms":802,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:37.242Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:37.750Z","event":"tenants.lookup.exact.ok","rid":null,"ms":506.4667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:37.752Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:37.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3754,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:37.785Z","event":"tenancy.ok","rid":null,"ms":543,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SPA] buildSpa called for path: /branding/theme
[SPA] Building for path: /branding/theme
[DEBUG] [SEO] applyThemeAndSeo called for path: /branding/theme
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /branding/theme
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T19:26:38.096Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.101Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.123Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.3769,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.124Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.126Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.278,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.127Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.139Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.148Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.151Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.165Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.8178,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.166Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.167Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5237,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.168Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.172Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.1576,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.173Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.175Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.3656,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.175Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.184Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.878,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.185Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.192Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.0963,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.194Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.197Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.2799,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.198Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.204Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.6128,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.205Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.225Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.243Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.250Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.251Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.252Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.266Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.6533,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.267Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.270Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.0836,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.271Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.272Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.276Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.286Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4891,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.288Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /tenants/resolve Original URL: /api/tenants/resolve?domain=localhost
[GATE DEBUG] Session ID: 15t-VJSeiUXqPp_KRGvqkyELcHKnaIol
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[API] {
  id: null,
  status: 304,
  ms: 72,
  method: 'GET',
  path: '/api/tenants/resolve?domain=localhost',
  origin: null,
  host: 'localhost:3000',
  tenantId: 1,
  authenticated: false
}
{"t":"2026-03-03T19:26:38.301Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.1684,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.304Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.307Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1898,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.308Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.311Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.2591,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.312Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.313Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.8213,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.315Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.317Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.323Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.3305,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.325Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.346Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.674,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.348Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.349Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6993,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.350Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.367Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.8025,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.368Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.381Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.383Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.402Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.9102,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.404Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.407Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.731,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.408Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.446Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.4179,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.447Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.451Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.001,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.454Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[TOP-DEBUG] Request: GET /api/v3/products?limit=8&offset=0&sort=newest&nocache=1&_ts=1772565998429
[TOP-DEBUG] Request: GET /api/v3/collections?limit=8&active_only=true&include_counts=true&nocache=1&_ts=1772565998429
{"t":"2026-03-03T19:26:38.462Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.464Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.503Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.3929,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.505Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.507Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.6508,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.508Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.523Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.1523,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.526Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /v3/collections Original URL: /api/v3/collections?limit=8&active_only=true&include_counts=true&nocache=1&_ts=1772565998429
[GATE DEBUG] Session ID: dFCQ8WbzeSsh4dd7HPhQ3wx_zxXszGZ6
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
{"t":"2026-03-03T19:26:38.536Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.1571,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.540Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /v3/products Original URL: /api/v3/products?limit=8&offset=0&sort=newest&nocache=1&_ts=1772565998429
[GATE DEBUG] Session ID: _DoyPCatYrkqW0UQ8_Ktuw6wty-Xvbw6
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[V3-DEBUG] Request: GET /api/v3/collections?limit=8&active_only=true&include_counts=true&nocache=1&_ts=1772565998429 -> path inside router: /collections
{"t":"2026-03-03T19:26:38.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.598Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
[V3-DEBUG] Request: GET /api/v3/products?limit=8&offset=0&sort=newest&nocache=1&_ts=1772565998429 -> path inside router: /products
{"t":"2026-03-03T19:26:38.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.4694,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.639Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.8575,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.683Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.4582,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.689Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.717Z","event":"tenants.lookup.default.ok","rid":null,"ms":70.0542,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.719Z","event":"tenancy.ok","rid":null,"ms":121,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.783Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.830Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:38.842Z","event":"tenants.lookup.exact.ok","rid":null,"ms":57.3661,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.845Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.868Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.6234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:38.870Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:38.874Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.6514,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.877Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:38.904Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5162,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:38.907Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[V2-DEBUG] /categories for tenant: 1, parent_id: undefined
[DEBUG] [SPA] buildSpa called for path: /categories
[SPA] Building for path: /categories
[DEBUG] [SEO] applyThemeAndSeo called for path: /categories
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /categories
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T19:26:44.709Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:44.730Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.9193,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:44.734Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:44.774Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.8058,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:44.777Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SPA] buildSpa called for path: /catalog-browser
[SPA] Building for path: /catalog-browser
[DEBUG] [SEO] applyThemeAndSeo called for path: /catalog-browser
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /catalog-browser
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T19:26:46.155Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:46.173Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:46.179Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:46.209Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.0016,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:46.210Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:46.212Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4688,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:46.214Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:46.218Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.9567,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:46.219Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:46.232Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:46.265Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.9812,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:46.266Z","event":"tenancy.ok","rid":null,"ms":111,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:46.268Z","event":"tenants.lookup.default.ok","rid":null,"ms":56.5758,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:46.269Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:46.271Z","event":"tenants.lookup.default.ok","rid":null,"ms":56.5473,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:46.273Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:46.282Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.7277,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:46.283Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:46.322Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3871,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:46.323Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:46.650Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:46.682Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2653,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:46.683Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:46.704Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.0835,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:46.705Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SPA] buildSpa called for path: /branding/theme
[SPA] Building for path: /branding/theme
[DEBUG] [SEO] applyThemeAndSeo called for path: /branding/theme
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /branding/theme
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T19:26:47.104Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:47.113Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:47.120Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:47.122Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:47.142Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.3796,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:47.143Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:47.145Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.3152,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:47.146Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:47.148Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9169,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:47.149Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:47.150Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.072,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:47.150Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:47.184Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.783,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:47.185Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:47.186Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.5153,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:47.187Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:47.189Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.1627,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:47.190Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:47.192Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.1481,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:47.192Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
{"t":"2026-03-03T19:26:47.273Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:47.285Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:26:47.322Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.3776,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:47.323Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:47.324Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.5237,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:47.324Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:47.363Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.7942,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:47.365Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[DEBUG] [SPA] buildSpa called for path: /categories
[SPA] Building for path: /categories
[DEBUG] [SEO] applyThemeAndSeo called for path: /categories
[DEBUG] [SEO] Fetching data...
[DEBUG] [SEO] fetchThemeVars for tenant: 1
{"t":"2026-03-03T19:26:47.389Z","event":"tenants.lookup.default.ok","rid":null,"ms":64.8018,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:47.390Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[TOP-DEBUG] Request: GET /api/v3/products/featured?limit=40
{"t":"2026-03-03T19:26:47.427Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
[DEBUG] [SEO] fetchThemeVars done: 16 rows
[DEBUG] [SEO] fetchSeoMeta for tenant: 1, path: /categories
{"t":"2026-03-03T19:26:47.462Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.5507,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:26:47.464Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:26:47.508Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.504,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:26:47.509Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[GATE DEBUG] Path: /v3/products/featured Original URL: /api/v3/products/featured?limit=40
[GATE DEBUG] Session ID: 7_FxnYXDoJm-D9yoqpSHzFbTaAaytQFW
[GATE DEBUG] Session: Session {
  cookie: {
    path: '/',
    _expires: null,
    originalMaxAge: null,
    httpOnly: true,
    sameSite: 'lax',
    secure: false
  }
}
[GATE DEBUG] Authenticated: undefined
[V3-DEBUG] Request: GET /api/v3/products/featured?limit=40 -> path inside router: /products/featured
[DEBUG] [SEO] fetchSeoMeta done: meta=false, links=2
[DEBUG] [SEO] Data fetched.
{"t":"2026-03-03T19:27:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:27:19.625Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:27:19.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.4345,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:27:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:27:19.671Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.2458,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:27:19.673Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:27:19.680Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.55,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:27:19.681Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:27:19.697Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:27:19.708Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.3235,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:27:19.710Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:27:19.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.1297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:27:19.728Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:27:19.771Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.0427,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:27:19.772Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:27:19.833Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:27:19.879Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.9672,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:27:19.881Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:27:19.922Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.1788,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:27:19.926Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:27:19.962Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:27:19.993Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:27:20.019Z","event":"tenants.lookup.exact.ok","rid":null,"ms":55.3913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:27:20.022Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:27:20.041Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:27:20.049Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.0786,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:27:20.053Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:27:20.064Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:27:20.091Z","event":"tenants.lookup.default.ok","rid":null,"ms":67.2974,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:27:20.093Z","event":"tenancy.ok","rid":null,"ms":131,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:27:20.109Z","event":"tenants.lookup.exact.ok","rid":null,"ms":65.955,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:27:20.112Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:27:20.115Z","event":"tenants.lookup.default.ok","rid":null,"ms":59.8724,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:27:20.117Z","event":"tenancy.ok","rid":null,"ms":124,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:27:20.131Z","event":"tenants.lookup.exact.ok","rid":null,"ms":65.0563,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:27:20.136Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:27:20.143Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0603,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:27:20.144Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:27:20.172Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.1123,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:27:20.174Z","event":"tenancy.ok","rid":null,"ms":110,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:27:20.275Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:27:20.322Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.0147,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:27:20.324Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:27:20.366Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:27:20.370Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.8905,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:27:20.373Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:27:20.412Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.4944,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:27:20.413Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:27:20.457Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2151,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:27:20.459Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:28:19.586Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:28:19.619Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:28:19.673Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.9792,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:28:19.675Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:28:19.678Z","event":"tenants.lookup.exact.ok","rid":null,"ms":90.2899,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:28:19.679Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:28:19.705Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.8291,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:28:19.707Z","event":"tenancy.ok","rid":null,"ms":121,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:28:19.721Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.9654,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:28:19.726Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:28:19.796Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:28:19.841Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:28:19.854Z","event":"tenants.lookup.exact.ok","rid":null,"ms":54.5556,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:28:19.856Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:28:19.880Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:28:19.888Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.491,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:28:19.890Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:28:19.917Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:28:19.920Z","event":"tenants.lookup.exact.ok","rid":null,"ms":77.5761,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:28:19.922Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:28:19.927Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:28:19.978Z","event":"tenants.lookup.exact.ok","rid":null,"ms":93.3892,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:28:19.980Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:28:20.022Z","event":"tenants.lookup.exact.ok","rid":null,"ms":103.149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:28:20.024Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:28:20.026Z","event":"tenants.lookup.exact.ok","rid":null,"ms":97.6596,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:28:20.028Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:28:20.032Z","event":"tenants.lookup.default.ok","rid":null,"ms":109.523,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:28:20.036Z","event":"tenancy.ok","rid":null,"ms":195,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:28:20.053Z","event":"tenants.lookup.default.ok","rid":null,"ms":70.3733,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:28:20.057Z","event":"tenancy.ok","rid":null,"ms":177,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:28:20.085Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:28:20.089Z","event":"tenants.lookup.default.ok","rid":null,"ms":64.0068,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:28:20.091Z","event":"tenancy.ok","rid":null,"ms":174,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:28:20.109Z","event":"tenants.lookup.default.ok","rid":null,"ms":78.6957,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:28:20.111Z","event":"tenancy.ok","rid":null,"ms":184,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:28:20.134Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.9111,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:28:20.137Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:28:20.188Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.8364,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:28:20.192Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:28:20.291Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:28:20.304Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:28:20.340Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.6052,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:28:20.345Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:28:20.348Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.768,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:28:20.355Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:28:20.429Z","event":"tenants.lookup.default.ok","rid":null,"ms":82.6491,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:28:20.431Z","event":"tenancy.ok","rid":null,"ms":140,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:28:20.442Z","event":"tenants.lookup.default.ok","rid":null,"ms":85.7702,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:28:20.443Z","event":"tenancy.ok","rid":null,"ms":139,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:29:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:29:19.606Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:29:19.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:29:19.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:29:19.789Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:29:20.081Z","event":"tenants.lookup.exact.ok","rid":null,"ms":400.6922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:29:20.083Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:29:20.085Z","event":"tenants.lookup.exact.ok","rid":null,"ms":293.4176,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:29:20.086Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:29:20.089Z","event":"tenants.lookup.exact.ok","rid":null,"ms":494.9287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:29:20.090Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:29:20.092Z","event":"tenants.lookup.exact.ok","rid":null,"ms":483.873,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:29:20.094Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:29:20.096Z","event":"tenants.lookup.exact.ok","rid":null,"ms":383.3117,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:29:20.097Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:29:20.124Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5385,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:29:20.125Z","event":"tenancy.ok","rid":null,"ms":533,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:29:20.138Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.3982,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:29:20.140Z","event":"tenancy.ok","rid":null,"ms":351,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:29:20.155Z","event":"tenants.lookup.default.ok","rid":null,"ms":60.0995,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:29:20.157Z","event":"tenancy.ok","rid":null,"ms":551,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:29:20.167Z","event":"tenants.lookup.default.ok","rid":null,"ms":82.5741,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:29:20.168Z","event":"tenancy.ok","rid":null,"ms":490,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:29:20.175Z","event":"tenants.lookup.default.ok","rid":null,"ms":76.266,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:29:20.176Z","event":"tenancy.ok","rid":null,"ms":465,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:29:20.289Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:29:20.303Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:29:20.312Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:29:20.322Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:29:20.349Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:29:20.973Z","event":"tenants.lookup.exact.ok","rid":null,"ms":681.8216,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:29:20.974Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:29:20.975Z","event":"tenants.lookup.exact.ok","rid":null,"ms":670.8414,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:29:20.976Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:29:20.979Z","event":"tenants.lookup.exact.ok","rid":null,"ms":663.9129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:29:20.980Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:29:20.982Z","event":"tenants.lookup.exact.ok","rid":null,"ms":657.4654,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:29:20.985Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:29:20.987Z","event":"tenants.lookup.exact.ok","rid":null,"ms":635.9217,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:29:20.989Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:29:21.001Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.5207,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:29:21.003Z","event":"tenancy.ok","rid":null,"ms":714,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:29:21.015Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:29:21.019Z","event":"tenancy.ok","rid":null,"ms":717,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:29:21.032Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.7739,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:29:21.037Z","event":"tenancy.ok","rid":null,"ms":726,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:29:21.050Z","event":"tenants.lookup.default.ok","rid":null,"ms":63.758,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:29:21.051Z","event":"tenancy.ok","rid":null,"ms":729,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:29:21.065Z","event":"tenants.lookup.default.ok","rid":null,"ms":74.8665,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:29:21.071Z","event":"tenancy.ok","rid":null,"ms":722,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T19:30:19.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:30:19.611Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:30:19.670Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:30:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:30:19.777Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:30:20.096Z","event":"tenants.lookup.exact.ok","rid":null,"ms":513.5061,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:30:20.098Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:30:20.100Z","event":"tenants.lookup.exact.ok","rid":null,"ms":487.3437,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:30:20.100Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:30:20.102Z","event":"tenants.lookup.exact.ok","rid":null,"ms":430.5946,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:30:20.103Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:30:20.105Z","event":"tenants.lookup.exact.ok","rid":null,"ms":375.7067,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:30:20.106Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:30:20.108Z","event":"tenants.lookup.exact.ok","rid":null,"ms":316.5767,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:30:20.109Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:30:20.532Z","event":"tenants.lookup.default.ok","rid":null,"ms":422.4865,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:30:20.534Z","event":"tenancy.ok","rid":null,"ms":757,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:30:20.540Z","event":"tenants.lookup.default.ok","rid":null,"ms":433.3204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:30:20.542Z","event":"tenancy.ok","rid":null,"ms":821,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:30:20.551Z","event":"tenants.lookup.default.ok","rid":null,"ms":447.0206,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:30:20.553Z","event":"tenancy.ok","rid":null,"ms":883,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:30:20.565Z","event":"tenants.lookup.default.ok","rid":null,"ms":463.2908,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:30:20.567Z","event":"tenancy.ok","rid":null,"ms":956,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:30:20.575Z","event":"tenants.lookup.default.ok","rid":null,"ms":476.0569,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:30:20.579Z","event":"tenancy.ok","rid":null,"ms":999,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:30:20.652Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:30:20.677Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:30:20.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:30:20.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:30:20.703Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:30:22.256Z","event":"tenants.lookup.exact.ok","rid":null,"ms":1600.2395,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:30:22.258Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:30:22.304Z","event":"tenants.lookup.exact.ok","rid":null,"ms":1625.4404,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:30:22.306Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:30:22.307Z","event":"tenants.lookup.exact.ok","rid":null,"ms":1624.0891,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:30:22.308Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:30:22.310Z","event":"tenants.lookup.exact.ok","rid":null,"ms":1615.8778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:30:22.311Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:30:22.313Z","event":"tenants.lookup.exact.ok","rid":null,"ms":1607.7068,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:30:22.314Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:30:23.610Z","event":"tenants.lookup.default.ok","rid":null,"ms":1300.5042,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:30:23.612Z","event":"tenancy.ok","rid":null,"ms":2930,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:30:23.619Z","event":"tenants.lookup.default.ok","rid":null,"ms":1312.3592,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:30:23.621Z","event":"tenancy.ok","rid":null,"ms":2944,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:30:23.631Z","event":"tenants.lookup.default.ok","rid":null,"ms":1371.4506,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:30:23.632Z","event":"tenancy.ok","rid":null,"ms":2980,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:30:23.641Z","event":"tenants.lookup.default.ok","rid":null,"ms":1325.5751,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:30:23.643Z","event":"tenancy.ok","rid":null,"ms":2940,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:30:23.653Z","event":"tenants.lookup.default.ok","rid":null,"ms":1340.549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:30:23.656Z","event":"tenancy.ok","rid":null,"ms":2967,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:31:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:31:19.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8767,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:31:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:31:19.644Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:31:19.667Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.0323,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:31:19.669Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:31:19.688Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.8764,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:31:19.690Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:31:19.697Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:31:19.727Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.9703,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:31:19.729Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:31:19.738Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.187,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:31:19.743Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:31:19.767Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.9691,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:31:19.809Z","event":"tenancy.ok","rid":null,"ms":112,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:31:19.875Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:31:19.916Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.0569,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:31:19.917Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:31:19.939Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:31:19.950Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5565,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:31:19.952Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:31:19.968Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:31:19.992Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.9845,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:31:19.994Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:31:19.995Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.9831,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:31:19.997Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:31:20.034Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:31:20.064Z","event":"tenants.lookup.default.ok","rid":null,"ms":69.6266,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:31:20.066Z","event":"tenancy.ok","rid":null,"ms":127,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:31:20.073Z","event":"tenants.lookup.default.ok","rid":null,"ms":75.595,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:31:20.075Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:31:20.089Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.8844,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:31:20.092Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:31:20.138Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.4761,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:31:20.140Z","event":"tenancy.ok","rid":null,"ms":106,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:31:20.201Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:31:20.245Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.8352,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:31:20.247Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:31:20.284Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.5571,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:31:20.286Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:31:20.422Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:31:20.436Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:31:20.466Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.9298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:31:20.468Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:31:20.471Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.6235,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:31:20.473Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:31:20.504Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:31:20.507Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:31:20.515Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.865,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:31:20.517Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:32:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:32:19.611Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.1862,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:32:19.613Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:32:19.631Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:32:19.644Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.2617,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:32:19.647Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:32:19.665Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.0101,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:32:19.669Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:32:19.684Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.5014,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:32:19.685Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:32:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:32:19.729Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.4738,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:32:19.741Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:32:19.747Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:32:19.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:32:19.784Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.954,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:32:19.786Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:32:19.790Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.3092,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:32:19.795Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:32:19.807Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.2722,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:32:19.810Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:32:19.813Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:32:19.828Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.2694,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:32:19.830Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:32:19.844Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.8184,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:32:19.849Z","event":"tenancy.ok","rid":null,"ms":102,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:32:19.861Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.3436,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:32:19.863Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:32:19.889Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.2401,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:32:19.892Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:32:19.982Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:32:20.025Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.2467,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:32:20.027Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:32:20.072Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.1691,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:32:20.073Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:32:20.145Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:32:20.176Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:32:20.211Z","event":"tenants.lookup.exact.ok","rid":null,"ms":64.3341,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:32:20.213Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:32:20.215Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.9892,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:32:20.216Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:32:20.251Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6317,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:32:20.253Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:32:20.261Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.1211,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:32:20.263Z","event":"tenancy.ok","rid":null,"ms":118,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:32:20.381Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:32:20.404Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.8088,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:32:20.405Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:32:20.444Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.8718,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:32:20.445Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:33:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:33:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:33:19.615Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4951,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:33:19.618Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:33:19.646Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.4123,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:33:19.648Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:33:19.657Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.5972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:33:19.659Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:33:19.687Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:33:19.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.0219,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:33:19.692Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:33:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:33:19.732Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.2731,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:33:19.734Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:33:19.745Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.2841,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:33:19.747Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:33:19.758Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:33:19.766Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.009,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:33:19.768Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:33:19.775Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.5271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:33:19.777Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:33:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:33:19.799Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.5644,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:33:19.801Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:33:19.830Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:33:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.4927,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:33:19.836Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:33:19.839Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.2765,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:33:19.840Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:33:19.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7731,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:33:19.869Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:33:19.879Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.3931,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:33:19.881Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:33:19.907Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.4043,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:33:19.909Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:33:20.057Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:33:20.089Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:33:20.090Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:33:20.123Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:33:20.126Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.4287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:33:20.127Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:33:20.156Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:33:20.166Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.1338,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:33:20.167Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:33:20.192Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.7003,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:33:20.193Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:33:20.195Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.0279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:33:20.197Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:33:20.236Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.8303,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:33:20.238Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:34:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:34:19.621Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.0789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:34:19.624Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:34:19.627Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:34:19.658Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.8858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:34:19.659Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:34:19.665Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.7198,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:34:19.669Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:34:19.680Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:34:19.692Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:34:19.702Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3039,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:34:19.704Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:34:19.718Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:34:19.723Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.8507,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:34:19.725Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:34:19.727Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.2037,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:34:19.730Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:34:19.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.8805,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:34:19.752Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:34:19.761Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4211,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:34:19.762Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:34:19.771Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.9203,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:34:19.773Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:34:19.781Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:34:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:34:19.796Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.7493,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:34:19.797Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:34:19.810Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:34:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.73,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:34:19.826Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:34:19.828Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.363,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:34:19.829Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:34:19.832Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.195,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:34:19.835Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:34:19.863Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:34:19.865Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8445,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:34:19.866Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:34:19.875Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.0929,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:34:19.876Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:34:19.887Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.3927,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:34:19.890Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:34:19.898Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.483,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:34:19.899Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:34:19.925Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:34:19.928Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.3363,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:34:19.929Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:34:19.964Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.872,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:34:19.967Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:34:20.010Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.5234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:34:20.012Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T19:35:19.645Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:35:19.690Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.7945,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:35:19.692Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:35:19.728Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.937,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:35:19.732Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:35:21.429Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:35:21.656Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:35:21.687Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:35:21.695Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:35:21.999Z","event":"tenants.lookup.exact.ok","rid":null,"ms":566.8744,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:35:22.003Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:35:22.080Z","event":"tenants.lookup.exact.ok","rid":null,"ms":421.1543,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:35:22.082Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:35:22.085Z","event":"tenants.lookup.exact.ok","rid":null,"ms":394.7114,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:35:22.087Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:35:22.090Z","event":"tenants.lookup.exact.ok","rid":null,"ms":392.8908,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:35:22.091Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:35:23.685Z","event":"tenants.lookup.default.ok","rid":null,"ms":1681.0969,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:35:23.689Z","event":"tenancy.ok","rid":null,"ms":2260,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:35:23.859Z","event":"tenants.lookup.default.ok","rid":null,"ms":1775.6427,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:35:23.862Z","event":"tenancy.ok","rid":null,"ms":2206,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:35:23.870Z","event":"tenants.lookup.default.ok","rid":null,"ms":1781.5972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:35:23.871Z","event":"tenancy.ok","rid":null,"ms":2184,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:35:23.884Z","event":"tenants.lookup.default.ok","rid":null,"ms":1790.9239,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:35:23.886Z","event":"tenancy.ok","rid":null,"ms":2191,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:35:29.628Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:35:29.669Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.5162,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:35:29.689Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:35:29.730Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.7785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:35:29.732Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:35:29.789Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:35:29.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.8703,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:35:29.815Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:35:29.839Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:35:29.903Z","event":"tenants.lookup.default.ok","rid":null,"ms":87.0514,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:35:29.906Z","event":"tenancy.ok","rid":null,"ms":117,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:35:29.940Z","event":"tenants.lookup.exact.ok","rid":null,"ms":97.794,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:35:29.942Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:35:30.098Z","event":"tenants.lookup.default.ok","rid":null,"ms":152.7523,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:35:30.100Z","event":"tenancy.ok","rid":null,"ms":261,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:35:30.201Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:35:30.251Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.9737,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:35:30.254Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:35:30.279Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:35:30.287Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.6941,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:35:30.288Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:35:30.320Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.9747,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:35:30.327Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:35:30.379Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.87,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:35:30.381Z","event":"tenancy.ok","rid":null,"ms":102,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:36:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:36:19.623Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:36:19.687Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:36:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:36:19.758Z","event":"tenants.lookup.exact.ok","rid":null,"ms":167.9807,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:36:19.759Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:36:19.769Z","event":"tenants.lookup.exact.ok","rid":null,"ms":80.1879,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:36:19.771Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:36:19.773Z","event":"tenants.lookup.exact.ok","rid":null,"ms":145.4855,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:36:19.774Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:36:19.775Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.0115,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:36:19.776Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:36:19.781Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:36:19.797Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.7026,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:36:19.799Z","event":"tenancy.ok","rid":null,"ms":112,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:36:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.2188,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:36:19.805Z","event":"tenancy.ok","rid":null,"ms":219,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:36:19.813Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.7575,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:36:19.815Z","event":"tenancy.ok","rid":null,"ms":192,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:36:19.825Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.6536,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:36:19.827Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:36:19.835Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.4809,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:36:19.837Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:36:19.890Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.6979,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:36:19.893Z","event":"tenancy.ok","rid":null,"ms":112,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:36:19.918Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:36:19.935Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:36:19.944Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:36:20.016Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:36:20.048Z","event":"tenants.lookup.exact.ok","rid":null,"ms":128.9098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:36:20.050Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:36:20.079Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:36:20.146Z","event":"tenants.lookup.exact.ok","rid":null,"ms":208.6868,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:36:20.148Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:36:20.150Z","event":"tenants.lookup.exact.ok","rid":null,"ms":204.6368,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:36:20.151Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:36:20.174Z","event":"tenants.lookup.exact.ok","rid":null,"ms":155.7473,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:36:20.175Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:36:20.221Z","event":"tenants.lookup.default.ok","rid":null,"ms":169.8253,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:36:20.222Z","event":"tenancy.ok","rid":null,"ms":304,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:36:20.274Z","event":"tenants.lookup.exact.ok","rid":null,"ms":192.9119,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:36:20.276Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:36:20.354Z","event":"tenants.lookup.default.ok","rid":null,"ms":205.8008,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:36:20.356Z","event":"tenancy.ok","rid":null,"ms":421,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:36:20.366Z","event":"tenants.lookup.default.ok","rid":null,"ms":214.9575,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:36:20.369Z","event":"tenancy.ok","rid":null,"ms":425,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:36:20.390Z","event":"tenants.lookup.default.ok","rid":null,"ms":214.0784,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:36:20.392Z","event":"tenancy.ok","rid":null,"ms":376,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:36:20.400Z","event":"tenants.lookup.default.ok","rid":null,"ms":122.6002,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:36:20.402Z","event":"tenancy.ok","rid":null,"ms":323,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:37:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:37:19.778Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:37:19.805Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:37:19.808Z","event":"tenants.lookup.exact.ok","rid":null,"ms":83.9373,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:37:19.809Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:37:19.812Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5894,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:37:19.813Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:37:19.827Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.9631,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:37:19.831Z","event":"tenancy.ok","rid":null,"ms":111,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:37:19.843Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.25,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:37:19.844Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:37:19.853Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.5375,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:37:19.855Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:37:19.871Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.1616,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:37:19.872Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:37:19.954Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:37:19.972Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.6215,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:37:19.973Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:37:20.005Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4736,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:37:20.007Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:37:20.231Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:37:20.268Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.0792,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:37:20.270Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:37:20.295Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.5293,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:37:20.298Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:37:20.337Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:37:20.369Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:37:20.375Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.5588,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:37:20.378Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:37:20.401Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.9831,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:37:20.403Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:37:20.405Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.7449,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:37:20.407Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:37:20.424Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:37:20.435Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1088,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:37:20.437Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:37:20.465Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.6671,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:37:20.467Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:37:20.508Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.5801,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:37:20.510Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:37:20.629Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:37:20.647Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.5932,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:37:20.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:37:20.688Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.4551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:37:20.691Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:37:20.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:37:20.748Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.2408,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:37:20.750Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:37:20.768Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.6146,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:37:20.770Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:38:19.625Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:38:19.659Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7042,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:38:19.661Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:38:19.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:38:19.787Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.3243,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:38:19.790Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:38:19.818Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:38:19.822Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.9694,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:38:19.828Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:38:19.862Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.4578,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:38:19.864Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:38:19.905Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:38:19.933Z","event":"tenants.lookup.default.ok","rid":null,"ms":68.5067,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:38:19.936Z","event":"tenancy.ok","rid":null,"ms":118,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:38:19.968Z","event":"tenants.lookup.default.ok","rid":null,"ms":305.5237,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:38:19.971Z","event":"tenancy.ok","rid":null,"ms":346,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:38:20.012Z","event":"tenants.lookup.exact.ok","rid":null,"ms":104.8271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:38:20.013Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:38:20.072Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.4575,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:38:20.074Z","event":"tenancy.ok","rid":null,"ms":169,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:38:20.211Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:38:20.263Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:38:20.312Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:38:20.372Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:38:20.527Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:38:20.547Z","event":"tenants.lookup.exact.ok","rid":null,"ms":333.138,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:38:20.549Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:38:20.551Z","event":"tenants.lookup.exact.ok","rid":null,"ms":286.3343,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:38:20.553Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:38:20.573Z","event":"tenants.lookup.exact.ok","rid":null,"ms":258.277,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:38:20.575Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:38:20.578Z","event":"tenants.lookup.exact.ok","rid":null,"ms":204.0799,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:38:20.579Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:38:20.606Z","event":"tenants.lookup.exact.ok","rid":null,"ms":76.605,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:38:20.608Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:38:20.638Z","event":"tenants.lookup.default.ok","rid":null,"ms":87.8711,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:38:20.640Z","event":"tenancy.ok","rid":null,"ms":429,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:38:20.650Z","event":"tenants.lookup.default.ok","rid":null,"ms":96.7399,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:38:20.652Z","event":"tenancy.ok","rid":null,"ms":389,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:38:20.668Z","event":"tenants.lookup.default.ok","rid":null,"ms":91.1533,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:38:20.672Z","event":"tenancy.ok","rid":null,"ms":360,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:38:20.682Z","event":"tenants.lookup.default.ok","rid":null,"ms":102.0371,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:38:20.687Z","event":"tenancy.ok","rid":null,"ms":316,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:38:20.702Z","event":"tenants.lookup.default.ok","rid":null,"ms":92.1546,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:38:20.704Z","event":"tenancy.ok","rid":null,"ms":177,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:38:21.233Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:38:21.584Z","event":"tenants.lookup.exact.ok","rid":null,"ms":348.4238,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:38:21.586Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:38:21.916Z","event":"tenants.lookup.default.ok","rid":null,"ms":328.9024,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:38:21.918Z","event":"tenancy.ok","rid":null,"ms":685,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:39:19.611Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:39:19.641Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:39:19.679Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:39:19.712Z","event":"tenants.lookup.exact.ok","rid":null,"ms":97.8291,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:39:19.714Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:39:19.715Z","event":"tenants.lookup.exact.ok","rid":null,"ms":71.5593,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:39:19.716Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:39:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.8168,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:39:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:39:19.767Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.9456,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:39:19.770Z","event":"tenancy.ok","rid":null,"ms":129,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:39:19.779Z","event":"tenants.lookup.default.ok","rid":null,"ms":64.5705,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:39:19.781Z","event":"tenancy.ok","rid":null,"ms":170,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:39:19.787Z","event":"tenants.lookup.default.ok","rid":null,"ms":66.0223,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:39:19.797Z","event":"tenancy.ok","rid":null,"ms":118,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:39:21.843Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:39:21.861Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.7696,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:39:21.863Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:39:21.902Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5793,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:39:21.906Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:39:21.927Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:39:22.049Z","event":"tenants.lookup.exact.ok","rid":null,"ms":119.4431,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:39:22.053Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:39:22.257Z","event":"tenants.lookup.default.ok","rid":null,"ms":202.5759,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:39:22.262Z","event":"tenancy.ok","rid":null,"ms":335,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:39:22.652Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:39:22.728Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:39:22.768Z","event":"tenants.lookup.exact.ok","rid":null,"ms":111.5242,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:39:22.770Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:39:22.793Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:39:22.843Z","event":"tenants.lookup.exact.ok","rid":null,"ms":111.7212,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:39:22.845Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:39:22.901Z","event":"tenants.lookup.default.ok","rid":null,"ms":129.6771,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:39:22.904Z","event":"tenancy.ok","rid":null,"ms":252,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:39:22.929Z","event":"tenants.lookup.exact.ok","rid":null,"ms":132.9883,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:39:22.930Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:39:22.944Z","event":"tenants.lookup.default.ok","rid":null,"ms":98.1358,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:39:22.945Z","event":"tenancy.ok","rid":null,"ms":217,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:39:22.975Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.5498,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:39:22.977Z","event":"tenancy.ok","rid":null,"ms":184,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:39:23.029Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:39:23.098Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:39:23.104Z","event":"tenants.lookup.exact.ok","rid":null,"ms":73.5243,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:39:23.110Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:39:23.129Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.1488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:39:23.132Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:39:23.166Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.376,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:39:23.171Z","event":"tenancy.ok","rid":null,"ms":142,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:39:23.188Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.2549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:39:23.190Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T19:40:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:40:19.614Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.3689,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:40:19.615Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:40:19.619Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:40:19.663Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.5121,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:40:19.666Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:40:19.675Z","event":"tenants.lookup.exact.ok","rid":null,"ms":55.0721,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:40:19.678Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:40:19.719Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.776,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:40:19.721Z","event":"tenancy.ok","rid":null,"ms":102,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:40:19.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:40:19.768Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.6385,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:40:19.770Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:40:19.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:40:19.808Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8206,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:40:19.809Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:40:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8798,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:40:19.836Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:40:19.875Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:40:19.883Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:40:19.887Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.8404,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:40:19.889Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:40:19.907Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0628,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:40:19.909Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:40:19.913Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.152,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:40:19.914Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:40:19.943Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:40:19.967Z","event":"tenants.lookup.default.ok","rid":null,"ms":56.5442,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:40:19.969Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:40:19.979Z","event":"tenants.lookup.default.ok","rid":null,"ms":64.5037,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:40:19.981Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:40:19.999Z","event":"tenants.lookup.exact.ok","rid":null,"ms":54.3699,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:40:20.001Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:40:20.063Z","event":"tenants.lookup.default.ok","rid":null,"ms":56.81,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:40:20.067Z","event":"tenancy.ok","rid":null,"ms":124,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:40:20.128Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:40:20.163Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:40:20.165Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:40:20.204Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.8813,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:40:20.207Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:40:20.375Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:40:20.407Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.19,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:40:20.408Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:40:20.424Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.1709,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:40:20.426Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:40:20.639Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:40:20.669Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.2497,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:40:20.672Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:40:20.708Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8319,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:40:20.710Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:41:19.600Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:41:19.630Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.8325,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:41:19.632Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:41:19.676Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.8131,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:41:19.678Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:41:19.831Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:41:19.849Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.4066,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:41:19.852Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:41:19.874Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:41:19.890Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9074,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:41:19.892Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:41:19.903Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.229,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:41:19.904Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:41:19.928Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:41:19.935Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6562,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:41:19.937Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:41:19.972Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.5491,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:41:19.974Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:41:19.993Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.8806,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:41:19.995Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:41:20.169Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:41:20.215Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.8628,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:41:20.217Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:41:20.259Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.0279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:41:20.263Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:41:20.777Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:41:20.810Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.9183,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:41:20.812Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:41:20.836Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:41:20.854Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.5301,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:41:20.856Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:41:20.870Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:41:20.873Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.2723,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:41:20.874Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:41:20.889Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.4604,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:41:20.891Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:41:20.893Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.4974,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:41:20.894Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:41:20.929Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.6853,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:41:20.931Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:41:21.161Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:41:21.192Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.59,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:41:21.194Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:41:21.201Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:41:21.229Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.001,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:41:21.231Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:41:21.233Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.5898,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:41:21.234Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:41:21.272Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.7478,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:41:21.274Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:42:21.570Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:42:21.592Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:42:21.594Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:42:21.630Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3639,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:42:21.634Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:42:21.783Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:42:21.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.2718,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:42:21.813Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:42:21.845Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:42:21.847Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:42:21.906Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:42:21.949Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.5505,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:42:21.951Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:42:21.987Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9762,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:42:21.989Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:42:22.008Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:42:22.033Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.4279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:42:22.038Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:42:22.070Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.8468,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:42:22.073Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:42:22.360Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:42:22.409Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.3061,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:42:22.411Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:42:22.425Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.616,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:42:22.427Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:42:22.559Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:42:22.591Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.2238,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:42:22.594Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:42:22.625Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8914,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:42:22.627Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:42:23.227Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:42:23.273Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.061,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:42:23.274Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:42:23.321Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:42:23.324Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.3136,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:42:23.326Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:42:23.355Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.3053,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:42:23.360Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:42:23.392Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0083,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:42:23.394Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:42:23.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:42:23.722Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.2079,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:42:23.723Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:42:23.750Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.2043,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:42:23.753Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:42:25.873Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:42:25.956Z","event":"tenants.lookup.exact.ok","rid":null,"ms":79.2009,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:42:25.957Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:42:25.987Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.9497,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:42:25.989Z","event":"tenancy.ok","rid":null,"ms":116,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:43:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:43:19.659Z","event":"tenants.lookup.exact.ok","rid":null,"ms":60.9414,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:43:19.663Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:43:19.690Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:43:19.693Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.812,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:43:19.695Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:43:19.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.5422,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:43:19.727Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:43:19.804Z","event":"tenants.lookup.default.ok","rid":null,"ms":75.2274,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:43:19.807Z","event":"tenancy.ok","rid":null,"ms":117,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:43:19.828Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:43:19.928Z","event":"tenants.lookup.exact.ok","rid":null,"ms":96.8886,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:43:19.930Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:43:19.958Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.1776,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:43:19.960Z","event":"tenancy.ok","rid":null,"ms":132,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:43:20.102Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:43:20.139Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4704,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:43:20.141Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:43:20.173Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6044,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:43:20.175Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:43:20.272Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:43:20.543Z","event":"tenants.lookup.exact.ok","rid":null,"ms":258.6557,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:43:20.547Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:43:20.666Z","event":"tenants.lookup.default.ok","rid":null,"ms":114.6691,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:43:20.671Z","event":"tenancy.ok","rid":null,"ms":399,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:43:21.653Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:43:21.688Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:43:21.754Z","event":"tenants.lookup.exact.ok","rid":null,"ms":98.6038,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:43:21.756Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:43:21.799Z","event":"tenants.lookup.exact.ok","rid":null,"ms":107.7977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:43:21.801Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:43:21.858Z","event":"tenants.lookup.default.ok","rid":null,"ms":100.8637,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:43:21.860Z","event":"tenancy.ok","rid":null,"ms":207,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:43:21.940Z","event":"tenants.lookup.default.ok","rid":null,"ms":137.1416,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:43:21.943Z","event":"tenancy.ok","rid":null,"ms":255,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:43:22.492Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:43:22.599Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:43:22.620Z","event":"tenants.lookup.exact.ok","rid":null,"ms":123.8733,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:43:22.621Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:43:22.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.7383,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:43:22.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:43:22.657Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7794,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:43:22.659Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:43:22.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.0908,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:43:22.675Z","event":"tenancy.ok","rid":null,"ms":183,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:43:29.051Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:43:29.098Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.8215,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:43:29.100Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:43:29.148Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.4374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:43:29.150Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:44:19.603Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:44:19.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.713,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:44:19.641Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:44:19.675Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3379,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:44:19.679Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:44:19.776Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:44:19.809Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2768,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:44:19.815Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:44:19.852Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6278,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:44:19.855Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:44:19.924Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:44:19.952Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1243,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:44:19.954Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:44:19.974Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:44:20.020Z","event":"tenants.lookup.default.ok","rid":null,"ms":64.3811,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:44:20.023Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:44:20.038Z","event":"tenants.lookup.exact.ok","rid":null,"ms":61.7754,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:44:20.040Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:44:20.075Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8402,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:44:20.078Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:44:20.188Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:44:20.286Z","event":"tenants.lookup.exact.ok","rid":null,"ms":95.6759,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:44:20.288Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:44:20.342Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.2744,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:44:20.345Z","event":"tenancy.ok","rid":null,"ms":157,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:44:20.428Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:44:20.488Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.3409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:44:20.490Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:44:20.528Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.033,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:44:20.531Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:44:20.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:44:20.808Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:44:20.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.939,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:44:20.838Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:44:20.872Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5499,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:44:20.874Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:44:20.911Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:44:20.926Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.5396,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:44:20.929Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:44:20.953Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.6098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:44:20.955Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:44:21.116Z","event":"tenants.lookup.exact.ok","rid":null,"ms":305.2031,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:44:21.118Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:44:21.155Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.3195,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:44:21.157Z","event":"tenancy.ok","rid":null,"ms":349,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:44:21.281Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:44:21.405Z","event":"tenants.lookup.exact.ok","rid":null,"ms":83.3959,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:44:21.407Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:44:21.455Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.5982,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:44:21.457Z","event":"tenancy.ok","rid":null,"ms":176,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T19:45:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:45:19.634Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.3788,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:45:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:45:19.653Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:45:19.671Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3599,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:45:19.673Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:45:19.688Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.2876,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:45:19.690Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:45:19.729Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.2424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:45:19.732Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:45:19.801Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:45:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.2229,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:45:19.836Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:45:19.857Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:45:19.871Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.1881,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:45:19.872Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:45:19.899Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.8045,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:45:19.901Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:45:19.930Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.5903,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:45:19.932Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:45:20.051Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:45:20.086Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.9921,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:45:20.088Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:45:20.117Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:45:20.121Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.33,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:45:20.133Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:45:20.156Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.4107,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:45:20.158Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:45:20.187Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.4916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:45:20.189Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:45:20.225Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:45:20.253Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:45:20.255Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:45:20.287Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.2999,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:45:20.289Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:45:20.606Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:45:20.663Z","event":"tenants.lookup.exact.ok","rid":null,"ms":54.2142,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:45:20.665Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:45:20.694Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.6204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:45:20.699Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:45:20.733Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:45:20.755Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:45:20.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5567,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:45:20.764Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:45:20.793Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.4068,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:45:20.795Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:45:20.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.7411,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:45:20.814Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:45:20.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.7036,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:45:20.853Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:46:19.646Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:46:19.822Z","event":"tenants.lookup.exact.ok","rid":null,"ms":167.2517,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:46:19.824Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:46:19.930Z","event":"tenants.lookup.default.ok","rid":null,"ms":104.4467,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:46:19.932Z","event":"tenancy.ok","rid":null,"ms":286,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:46:20.030Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:46:20.082Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.2094,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:46:20.084Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:46:20.239Z","event":"tenants.lookup.default.ok","rid":null,"ms":153.9899,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:46:20.243Z","event":"tenancy.ok","rid":null,"ms":214,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:46:20.750Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:46:20.796Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.0191,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:46:20.798Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:46:20.833Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9794,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:46:20.835Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:46:21.045Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:46:21.068Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:46:21.078Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5337,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:46:21.081Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:46:21.137Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.151,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:46:21.162Z","event":"tenancy.ok","rid":null,"ms":117,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:46:21.186Z","event":"tenants.lookup.exact.ok","rid":null,"ms":115.9775,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:46:21.198Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:46:21.382Z","event":"tenants.lookup.default.ok","rid":null,"ms":182.8741,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:46:21.384Z","event":"tenancy.ok","rid":null,"ms":316,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:46:21.641Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:46:21.744Z","event":"tenants.lookup.exact.ok","rid":null,"ms":98.8922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:46:21.746Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:46:21.790Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.695,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:46:21.794Z","event":"tenancy.ok","rid":null,"ms":153,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:46:21.810Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:46:21.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6795,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:46:21.840Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:46:21.875Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0599,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:46:21.889Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:46:22.091Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:46:22.143Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.7235,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:46:22.145Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:46:22.188Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.3549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:46:22.190Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:46:22.266Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:46:22.291Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.3641,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:46:22.294Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:46:22.328Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.1963,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:46:22.330Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:46:22.380Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:46:22.512Z","event":"tenants.lookup.exact.ok","rid":null,"ms":130.0862,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:46:22.523Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:46:22.552Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.5812,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:46:22.555Z","event":"tenancy.ok","rid":null,"ms":174,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:47:19.600Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:47:19.646Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.9113,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:47:19.647Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:47:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3069,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:47:19.688Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:47:19.718Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:47:19.746Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.7231,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:47:19.748Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:47:19.787Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3105,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:47:19.789Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:47:19.849Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:47:19.902Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.2842,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:47:19.905Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:47:19.921Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:47:19.958Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.5147,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:47:19.961Z","event":"tenancy.ok","rid":null,"ms":112,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:47:19.979Z","event":"tenants.lookup.exact.ok","rid":null,"ms":54.6395,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:47:19.984Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:47:20.016Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1215,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:47:20.019Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:47:20.242Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:47:20.266Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:47:20.276Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:47:20.279Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:47:20.313Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.8364,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:47:20.315Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:47:20.317Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4644,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:47:20.319Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:47:20.349Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.43,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:47:20.350Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:47:20.663Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:47:20.698Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.5513,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:47:20.700Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:47:20.745Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:47:20.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.2587,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:47:20.751Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:47:20.780Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.2913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:47:20.781Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:47:20.811Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8412,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:47:20.813Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:47:20.847Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:47:20.868Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.4678,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:47:20.872Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:47:20.892Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.925,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:47:20.895Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:47:21.191Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:47:21.235Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.981,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:47:21.239Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:47:21.269Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.9711,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:47:21.272Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:48:19.643Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:48:19.657Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:48:19.691Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.5059,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:48:19.693Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:48:19.706Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.5517,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:48:19.710Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:48:19.738Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.5849,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:48:19.741Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:48:19.752Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.1123,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:48:19.757Z","event":"tenancy.ok","rid":null,"ms":114,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:48:19.824Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:48:19.859Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3336,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:48:19.861Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:48:19.895Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:48:19.914Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.8945,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:48:19.916Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:48:19.948Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.1795,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:48:19.951Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:48:19.988Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0226,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:48:19.991Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:48:20.074Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:48:20.099Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.6158,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:48:20.101Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:48:20.155Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.0742,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:48:20.159Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:48:20.270Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:48:20.310Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:48:20.332Z","event":"tenants.lookup.exact.ok","rid":null,"ms":57.7935,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:48:20.334Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:48:20.346Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.7939,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:48:20.348Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:48:20.384Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.6207,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:48:20.388Z","event":"tenancy.ok","rid":null,"ms":118,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:48:20.408Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.1405,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:48:20.411Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:48:20.575Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:48:20.614Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.6303,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:48:20.617Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:48:20.649Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.4613,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:48:20.651Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:48:20.728Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:48:20.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.7647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:48:20.754Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:48:20.789Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7817,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:48:20.792Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:48:20.946Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:48:20.993Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.0676,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:48:20.995Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:48:21.034Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.1266,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:48:21.036Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:49:19.594Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:49:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.6155,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:49:19.643Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:49:19.677Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.457,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:49:19.680Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:49:19.755Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:49:19.774Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.3983,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:49:19.776Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:49:19.802Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:49:19.809Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.4597,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:49:19.811Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:49:19.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.8518,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:49:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:49:19.871Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.3902,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:49:19.872Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:49:19.955Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:49:19.980Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.9862,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:49:19.984Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:49:20.020Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7043,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:49:20.024Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:49:20.170Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:49:20.200Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.9617,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:49:20.202Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:49:20.244Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.0276,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:49:20.251Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:49:20.311Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:49:20.338Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.8622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:49:20.340Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:49:20.374Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2786,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:49:20.376Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:49:20.787Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:49:20.842Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.5568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:49:20.845Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:49:20.862Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:49:20.879Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5555,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:49:20.881Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:49:20.897Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:49:20.900Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:49:20.943Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.1808,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:49:20.946Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:49:21.190Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:49:21.255Z","event":"tenants.lookup.exact.ok","rid":null,"ms":58.7095,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:49:21.257Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:49:21.289Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.0254,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:49:21.291Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:49:21.462Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:49:21.499Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.754,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:49:21.501Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:49:21.531Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.1702,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:49:21.534Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T19:50:19.600Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:50:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.3935,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:50:19.639Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:50:19.680Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.1299,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:50:19.683Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:50:19.705Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:50:19.738Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.9767,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:50:19.740Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:50:19.774Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9056,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:50:19.776Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:50:19.808Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:50:19.830Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.3351,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:50:19.832Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:50:19.874Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.7905,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:50:19.876Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:50:19.895Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:50:19.921Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:50:19.929Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.0417,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:50:19.934Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:50:19.952Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.562,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:50:19.955Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:50:19.971Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.4916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:50:19.973Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:50:20.002Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.2141,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:50:20.007Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:50:20.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:50:20.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.0832,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:50:20.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:50:20.812Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.3357,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:50:20.815Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:50:20.938Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:50:20.975Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.5247,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:50:20.977Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:50:21.010Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4444,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:50:21.012Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:50:21.155Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:50:21.182Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:50:21.194Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.1605,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:50:21.197Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:50:21.222Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.6299,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:50:21.224Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:50:21.226Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.1092,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:50:21.228Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:50:21.256Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.4079,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:50:21.258Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:50:21.350Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:50:21.379Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.5854,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:50:21.382Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:50:21.409Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.3307,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:50:21.411Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:51:19.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:51:19.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.9616,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:51:19.640Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:51:19.675Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7946,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:51:19.677Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:51:19.693Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:51:19.728Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.2937,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:51:19.730Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:51:19.750Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.6244,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:51:19.752Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:51:19.808Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:51:19.957Z","event":"tenants.lookup.exact.ok","rid":null,"ms":146.8788,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:51:19.960Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:51:19.995Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.52,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:51:19.998Z","event":"tenancy.ok","rid":null,"ms":190,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:51:20.125Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:51:20.271Z","event":"tenants.lookup.exact.ok","rid":null,"ms":143.0901,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:51:20.274Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:51:20.322Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.9874,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:51:20.324Z","event":"tenancy.ok","rid":null,"ms":199,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:51:20.834Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:51:20.961Z","event":"tenants.lookup.exact.ok","rid":null,"ms":121.257,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:51:20.964Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:51:21.005Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.2919,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:51:21.007Z","event":"tenancy.ok","rid":null,"ms":173,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:51:21.038Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:51:21.048Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:51:21.079Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.8851,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:51:21.082Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:51:21.103Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.9132,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:51:21.105Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:51:21.109Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.2532,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:51:21.111Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:51:21.131Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.1872,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:51:21.134Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:51:21.317Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:51:21.365Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.5506,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:51:21.372Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:51:21.416Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.9087,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:51:21.419Z","event":"tenancy.ok","rid":null,"ms":102,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:51:21.650Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:51:21.669Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.3968,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:51:21.670Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:51:21.711Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.3159,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:51:21.713Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:51:21.843Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:51:21.927Z","event":"tenants.lookup.exact.ok","rid":null,"ms":74.6782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:51:21.930Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:51:21.950Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.4357,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:51:21.955Z","event":"tenancy.ok","rid":null,"ms":112,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:52:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:52:19.619Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.6541,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:52:19.620Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:52:19.655Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.1131,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:52:19.657Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:52:19.717Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:52:19.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.6596,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:52:19.764Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:52:19.805Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.3967,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:52:19.807Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:52:19.887Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:52:19.916Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.475,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:52:19.918Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:52:19.959Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.3204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:52:19.962Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:52:20.065Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:52:20.099Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.3645,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:52:20.101Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:52:20.110Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:52:20.142Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.0297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:52:20.144Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:52:20.154Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.3725,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:52:20.156Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:52:20.198Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.1008,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:52:20.203Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:52:20.300Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:52:20.336Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.1117,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:52:20.338Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:52:20.379Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.9052,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:52:20.382Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:52:20.601Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:52:20.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.3652,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:52:20.641Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:52:20.676Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3194,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:52:20.679Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:52:20.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:52:20.841Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.8201,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:52:20.843Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:52:20.856Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:52:20.877Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.511,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:52:20.886Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:52:20.903Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.1939,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:52:20.907Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:52:20.920Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:52:20.936Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.3466,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:52:20.939Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:52:20.954Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3315,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:52:20.955Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:52:20.978Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.6378,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:52:20.981Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:53:19.698Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:53:19.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.6644,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:53:19.756Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:53:19.783Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.8208,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:53:19.785Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:53:20.159Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:53:20.201Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.5108,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:53:20.203Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:53:20.252Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.7206,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:53:20.254Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:53:20.403Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:53:20.423Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:53:20.446Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.4299,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:53:20.449Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:53:20.483Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0303,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:53:20.484Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:53:20.497Z","event":"tenants.lookup.exact.ok","rid":null,"ms":68.399,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:53:20.498Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:53:20.546Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.9273,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:53:20.550Z","event":"tenancy.ok","rid":null,"ms":127,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:53:20.646Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:53:20.684Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.4855,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:53:20.686Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:53:20.742Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.0088,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:53:20.745Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:53:20.969Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:53:21.003Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5937,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:53:21.005Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:53:21.048Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.5001,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:53:21.050Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:53:22.923Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:53:22.988Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.5351,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:53:22.991Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:53:23.023Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.9778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:53:23.026Z","event":"tenancy.ok","rid":null,"ms":102,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:53:23.090Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:53:23.225Z","event":"tenants.lookup.exact.ok","rid":null,"ms":126.1298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:53:23.227Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:53:23.283Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.8556,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:53:23.285Z","event":"tenancy.ok","rid":null,"ms":195,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:53:23.455Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:53:23.646Z","event":"tenants.lookup.exact.ok","rid":null,"ms":188.2956,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:53:23.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:53:23.681Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.9132,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:53:23.683Z","event":"tenancy.ok","rid":null,"ms":228,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:53:23.823Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:53:23.985Z","event":"tenants.lookup.exact.ok","rid":null,"ms":159.7806,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:53:23.988Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:53:24.017Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.5938,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:53:24.019Z","event":"tenancy.ok","rid":null,"ms":196,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:54:19.594Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:54:19.622Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.1648,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:54:19.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:54:19.668Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.7674,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:54:19.669Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:54:19.927Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:54:19.941Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:54:19.961Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5452,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:54:19.963Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:54:19.978Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7226,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:54:19.980Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:54:19.985Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.4494,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:54:19.987Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:54:20.033Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.0108,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:54:20.035Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:54:20.417Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:54:20.435Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:54:20.470Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.0403,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:54:20.472Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:54:20.475Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.2473,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:54:20.481Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:54:20.498Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.1092,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:54:20.500Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:54:20.516Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0342,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:54:20.529Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:54:21.138Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:54:21.179Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.068,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:54:21.181Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:54:21.231Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.1794,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:54:21.233Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:54:21.370Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:54:21.399Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:54:21.425Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.1106,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:54:21.429Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:54:21.441Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.2527,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:54:21.444Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:54:21.457Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.3329,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:54:21.461Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:54:21.490Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.0674,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:54:21.496Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:54:21.522Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:54:21.560Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.8988,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:54:21.562Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:54:21.601Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3023,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:54:21.603Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:54:21.764Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:54:21.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1304,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:54:21.803Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:54:21.841Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8354,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:54:21.844Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T19:55:19.600Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:55:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.0885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:55:19.646Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:55:19.684Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.2365,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:55:19.688Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:55:19.703Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:55:19.740Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5682,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:55:19.742Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:55:19.779Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6893,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:55:19.781Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:55:19.796Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:55:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.6663,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:55:19.823Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:55:19.858Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.8031,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:55:19.860Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:55:19.963Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:55:20.015Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.0124,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:55:20.016Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:55:20.047Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4698,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:55:20.050Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:55:20.114Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:55:20.138Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.97,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:55:20.141Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:55:20.182Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6319,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:55:20.184Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:55:20.467Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:55:20.498Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7584,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:55:20.499Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:55:20.539Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5194,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:55:20.543Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:55:20.732Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:55:20.776Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.4433,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:55:20.778Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:55:20.804Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.3423,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:55:20.807Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:55:20.955Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:55:21.008Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.4736,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:55:21.010Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:55:21.047Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3392,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:55:21.050Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:55:21.322Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:55:21.366Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.9912,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:55:21.368Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:55:21.398Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.3814,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:55:21.400Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:55:21.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:55:21.796Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.9846,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:55:21.798Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:55:21.826Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.5659,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:55:21.829Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:56:19.621Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:56:19.646Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.1112,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:56:19.647Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:56:19.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.0632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:56:19.694Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:56:19.746Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:56:19.878Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:56:19.895Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:56:19.898Z","event":"tenants.lookup.exact.ok","rid":null,"ms":144.1071,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:56:19.899Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:56:19.911Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.2807,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:56:19.913Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:56:19.960Z","event":"tenants.lookup.exact.ok","rid":null,"ms":63.4015,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:56:19.962Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:56:19.964Z","event":"tenants.lookup.default.ok","rid":null,"ms":63.3728,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:56:19.969Z","event":"tenancy.ok","rid":null,"ms":222,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:56:19.989Z","event":"tenants.lookup.default.ok","rid":null,"ms":75.316,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:56:19.993Z","event":"tenancy.ok","rid":null,"ms":115,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:56:20.009Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:56:20.020Z","event":"tenants.lookup.default.ok","rid":null,"ms":57.3989,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:56:20.022Z","event":"tenancy.ok","rid":null,"ms":127,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:56:20.066Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.7363,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:56:20.069Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:56:20.213Z","event":"tenants.lookup.default.ok","rid":null,"ms":142.116,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:56:20.216Z","event":"tenancy.ok","rid":null,"ms":207,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:56:20.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:56:20.781Z","event":"tenants.lookup.exact.ok","rid":null,"ms":184.2402,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:56:20.783Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:56:20.831Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.673,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:56:20.835Z","event":"tenancy.ok","rid":null,"ms":246,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:56:21.132Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:56:21.173Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.9337,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:56:21.175Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:56:21.229Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.7035,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:56:21.231Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:56:21.502Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:56:21.538Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5887,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:56:21.540Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:56:21.593Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.1613,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:56:21.595Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:56:21.833Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:56:21.862Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:56:21.910Z","event":"tenants.lookup.exact.ok","rid":null,"ms":74.7185,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:56:21.912Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:56:21.915Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.1897,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:56:21.920Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:56:21.954Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.6071,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:56:21.956Z","event":"tenancy.ok","rid":null,"ms":123,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:56:21.969Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.1704,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:56:21.972Z","event":"tenancy.ok","rid":null,"ms":110,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:57:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:57:19.664Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.1101,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:57:19.667Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:57:19.699Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.7464,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:57:19.702Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:57:19.869Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:57:19.902Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.8959,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:57:19.905Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:57:19.942Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.5251,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:57:19.945Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:57:20.030Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:57:20.080Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.1178,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:57:20.084Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:57:20.118Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3895,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:57:20.122Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:57:20.418Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:57:20.478Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.0584,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:57:20.480Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:57:20.521Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.8727,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:57:20.523Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:57:20.644Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:57:20.705Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.8274,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:57:20.708Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:57:20.741Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4066,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:57:20.743Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:57:20.967Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:57:21.012Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.3411,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:57:21.016Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:57:21.070Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.4706,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:57:21.073Z","event":"tenancy.ok","rid":null,"ms":106,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:57:22.964Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:57:23.009Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.2446,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:57:23.011Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:57:23.039Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.9694,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:57:23.041Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:57:23.141Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:57:23.166Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:57:23.194Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.7245,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:57:23.197Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:57:23.210Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.0274,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:57:23.213Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:57:23.233Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.2827,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:57:23.241Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:57:23.275Z","event":"tenants.lookup.default.ok","rid":null,"ms":60.8163,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:57:23.277Z","event":"tenancy.ok","rid":null,"ms":111,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:57:23.777Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:57:23.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.4897,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:57:23.814Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:57:23.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0431,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:57:23.854Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:58:19.968Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:58:20.005Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3734,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:58:20.007Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:58:20.041Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5206,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:58:20.042Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:58:20.205Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:58:20.254Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.3089,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:58:20.257Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:58:20.304Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.2626,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:58:20.305Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:58:20.364Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:58:20.408Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:58:20.411Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.0157,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:58:20.412Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:58:20.439Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3951,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:58:20.441Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:58:20.442Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.4858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:58:20.444Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:58:20.484Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.6694,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:58:20.487Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:58:20.676Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:58:20.714Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:58:20.716Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:58:20.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.5716,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:58:20.761Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:58:21.812Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:58:21.849Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4353,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:58:21.851Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:58:21.889Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.2588,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:58:21.891Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:58:22.090Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:58:22.124Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:58:22.138Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.3259,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:58:22.141Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:58:22.159Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.7065,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:58:22.161Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:58:22.166Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.4568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:58:22.167Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:58:22.203Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:58:22.206Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.7984,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:58:22.208Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:58:22.232Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.119,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:58:22.249Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:58:22.285Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7967,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:58:22.287Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:58:22.558Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:58:22.601Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.5901,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:58:22.603Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:58:22.635Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.8007,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:58:22.637Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:59:19.595Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:59:19.622Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.4168,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:59:19.624Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:59:19.658Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2028,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:59:19.660Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:59:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:59:19.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:59:19.798Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:59:19.885Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:59:19.889Z","event":"tenants.lookup.exact.ok","rid":null,"ms":202.8509,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:59:19.890Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:59:19.893Z","event":"tenants.lookup.exact.ok","rid":null,"ms":124.7602,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:59:19.899Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:59:19.902Z","event":"tenants.lookup.exact.ok","rid":null,"ms":101.2061,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:59:19.903Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:59:19.934Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.4624,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:59:19.938Z","event":"tenancy.ok","rid":null,"ms":254,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:59:19.953Z","event":"tenants.lookup.exact.ok","rid":null,"ms":64.6729,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:59:19.959Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:59:19.962Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.6678,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:59:19.970Z","event":"tenancy.ok","rid":null,"ms":204,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:59:20.008Z","event":"tenants.lookup.default.ok","rid":null,"ms":104.0562,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:59:20.015Z","event":"tenancy.ok","rid":null,"ms":216,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:59:20.029Z","event":"tenants.lookup.default.ok","rid":null,"ms":67.1034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:59:20.031Z","event":"tenancy.ok","rid":null,"ms":145,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:59:20.199Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:59:20.305Z","event":"tenants.lookup.exact.ok","rid":null,"ms":100.0885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:59:20.307Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:59:20.348Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.7047,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:59:20.350Z","event":"tenancy.ok","rid":null,"ms":151,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:59:20.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:59:20.770Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:59:20.774Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.2496,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:59:20.781Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:59:20.795Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:59:20.826Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.7532,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:59:20.837Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:59:20.841Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.9219,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:59:20.843Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:59:20.846Z","event":"tenants.lookup.default.ok","rid":null,"ms":63.2931,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:59:20.852Z","event":"tenancy.ok","rid":null,"ms":127,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:59:21.026Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T19:59:21.079Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T19:59:21.084Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T19:59:21.088Z","event":"tenants.lookup.default.ok","rid":null,"ms":243.1128,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:59:21.090Z","event":"tenancy.ok","rid":null,"ms":295,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:59:21.104Z","event":"tenants.lookup.default.ok","rid":null,"ms":263.7943,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:59:21.106Z","event":"tenancy.ok","rid":null,"ms":336,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T19:59:21.132Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.1567,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T19:59:21.138Z","event":"tenancy.ok","rid":null,"ms":112,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T20:00:19.606Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:00:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7389,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:00:19.646Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:00:19.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:00:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5347,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:00:19.688Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:00:19.733Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.4882,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:00:19.735Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:00:19.768Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.4916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:00:19.770Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:00:19.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:00:19.820Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.0902,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:00:19.821Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:00:19.861Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.6614,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:00:19.864Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:00:19.883Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:00:19.903Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.4354,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:00:19.906Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:00:19.941Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.8556,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:00:19.945Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:00:20.031Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:00:20.062Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.7737,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:00:20.064Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:00:20.105Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.754,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:00:20.108Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:00:20.334Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:00:20.343Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:00:20.366Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.9805,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:00:20.368Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:00:20.381Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5345,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:00:20.382Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:00:20.385Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.6484,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:00:20.386Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:00:20.420Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.0108,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:00:20.423Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:00:20.573Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:00:20.602Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.357,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:00:20.604Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:00:20.638Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:00:20.649Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2458,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:00:20.650Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:00:20.685Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.1724,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:00:20.686Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:00:20.720Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2676,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:00:20.723Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:00:20.888Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:00:20.921Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1867,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:00:20.923Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:00:20.966Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.9102,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:00:20.968Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:01:19.603Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:01:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.6629,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:01:19.646Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:01:19.688Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.9517,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:01:19.692Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:01:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:01:19.752Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.8573,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:01:19.755Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:01:19.826Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:01:19.864Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:01:19.934Z","event":"tenants.lookup.exact.ok","rid":null,"ms":102.9916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:01:19.935Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:01:19.937Z","event":"tenants.lookup.default.ok","rid":null,"ms":179.8975,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:01:19.938Z","event":"tenancy.ok","rid":null,"ms":218,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:01:19.950Z","event":"tenants.lookup.exact.ok","rid":null,"ms":83.8352,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:01:19.951Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:01:19.962Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.7706,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:01:19.964Z","event":"tenancy.ok","rid":null,"ms":138,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:01:19.984Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:01:19.987Z","event":"tenancy.ok","rid":null,"ms":123,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:01:20.092Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:01:20.263Z","event":"tenants.lookup.exact.ok","rid":null,"ms":166.6348,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:01:20.266Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:01:20.314Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.4091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:01:20.317Z","event":"tenancy.ok","rid":null,"ms":225,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:01:20.982Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:01:21.002Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.6449,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:01:21.007Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:01:21.028Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.999,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:01:21.030Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:01:21.122Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:01:21.269Z","event":"tenants.lookup.exact.ok","rid":null,"ms":141.6845,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:01:21.272Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:01:21.305Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:01:21.307Z","event":"tenancy.ok","rid":null,"ms":185,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:01:21.454Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:01:21.485Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1779,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:01:21.489Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:01:21.635Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:01:21.651Z","event":"tenants.lookup.default.ok","rid":null,"ms":157.778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:01:21.655Z","event":"tenancy.ok","rid":null,"ms":201,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:01:21.686Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.3169,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:01:21.689Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:01:21.725Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.451,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:01:21.731Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:01:21.814Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:01:22.001Z","event":"tenants.lookup.exact.ok","rid":null,"ms":184.5465,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:01:22.003Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:01:22.047Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.7784,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:01:22.049Z","event":"tenancy.ok","rid":null,"ms":235,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:02:19.601Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:02:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.8649,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:02:19.655Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:02:19.685Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.3298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:02:19.688Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:02:19.730Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:02:19.761Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:02:19.763Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:02:19.787Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.7241,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:02:19.789Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:02:19.916Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:02:19.938Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:02:19.963Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.0383,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:02:19.965Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:02:19.967Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.584,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:02:19.968Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:02:20.002Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.637,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:02:20.004Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:02:20.016Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.4832,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:02:20.017Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:02:20.206Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:02:20.247Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.9528,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:02:20.249Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:02:20.290Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6912,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:02:20.293Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:02:20.464Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:02:20.503Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.1945,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:02:20.507Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:02:20.548Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.8845,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:02:20.550Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:02:20.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:02:20.850Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.7429,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:02:20.852Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:02:20.915Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.1449,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:02:20.917Z","event":"tenancy.ok","rid":null,"ms":118,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:02:21.537Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:02:21.565Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:02:21.567Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:02:21.602Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3037,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:02:21.605Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:02:21.773Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:02:21.833Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.2215,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:02:21.836Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:02:21.864Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.7692,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:02:21.866Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:02:22.433Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:02:22.472Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.1497,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:02:22.474Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:02:22.509Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.2184,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:02:22.512Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:03:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:03:19.625Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.0831,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:03:19.627Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:03:19.651Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:03:19.663Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.8778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:03:19.664Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:03:19.685Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0601,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:03:19.688Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:03:19.724Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.1204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:03:19.727Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:03:19.828Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:03:19.850Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:03:19.883Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.3739,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:03:19.888Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:03:19.891Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.7553,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:03:19.893Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:03:19.910Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:03:19.927Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0634,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:03:19.929Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:03:19.942Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.8815,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:03:19.945Z","event":"tenancy.ok","rid":null,"ms":117,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:03:19.963Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.9988,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:03:19.965Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:03:19.991Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.7633,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:03:19.993Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:03:20.083Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:03:20.126Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.0097,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:03:20.128Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:03:20.163Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7189,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:03:20.165Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:03:20.249Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:03:20.292Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.6127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:03:20.294Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:03:20.325Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.5833,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:03:20.327Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:03:20.462Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:03:20.509Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.2228,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:03:20.511Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:03:20.544Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.8877,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:03:20.546Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:03:20.680Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:03:20.730Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.5208,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:03:20.732Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:03:20.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.9572,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:03:20.764Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:03:20.941Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:03:20.968Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6547,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:03:20.970Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:03:21.013Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.4013,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:03:21.016Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:04:19.760Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:04:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:04:19.827Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.0807,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:04:19.829Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:04:19.832Z","event":"tenants.lookup.exact.ok","rid":null,"ms":67.6332,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:04:19.834Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:04:19.857Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.2457,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:04:19.859Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:04:19.881Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.1162,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:04:19.884Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:04:19.986Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:04:20.008Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.8669,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:04:20.010Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:04:20.052Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.417,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:04:20.053Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:04:20.215Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:04:20.254Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.3172,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:04:20.255Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:04:20.282Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:04:20.300Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.028,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:04:20.312Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:04:20.343Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.6732,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:04:20.345Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:04:20.375Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4772,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:04:20.378Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:04:20.834Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:04:20.876Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.8864,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:04:20.878Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:04:20.910Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.0312,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:04:20.912Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:04:20.938Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:04:20.974Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.8487,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:04:20.976Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:04:21.014Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.7869,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:04:21.016Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:04:21.039Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:04:21.060Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:04:21.072Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.3847,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:04:21.074Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:04:21.127Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.9804,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:04:21.129Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:04:21.357Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:04:21.366Z","event":"tenants.lookup.exact.ok","rid":null,"ms":303.2961,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:04:21.370Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:04:21.392Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.1162,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:04:21.395Z","event":"tenancy.ok","rid":null,"ms":335,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:04:21.408Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:04:21.410Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:04:21.433Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.4545,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:04:21.436Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T20:05:21.897Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:05:21.908Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:05:21.924Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:05:21.931Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.2829,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:05:21.933Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:05:21.943Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5588,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:05:21.945Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:05:21.955Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.0477,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:05:21.957Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:05:21.959Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.4362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:05:21.960Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:05:21.987Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.6803,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:05:21.989Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:05:22.004Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.1798,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:05:22.006Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:05:23.199Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:05:23.247Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.567,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:05:23.249Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:05:23.258Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:05:23.297Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.3646,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:05:23.304Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:05:23.326Z","event":"tenants.lookup.exact.ok","rid":null,"ms":64.7829,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:05:23.338Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:05:23.454Z","event":"tenants.lookup.default.ok","rid":null,"ms":114.7758,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:05:23.456Z","event":"tenancy.ok","rid":null,"ms":198,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:05:24.034Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:05:24.065Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:05:24.075Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.2113,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:05:24.078Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:05:24.085Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.6108,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:05:24.088Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:05:24.112Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0238,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:05:24.116Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:05:24.136Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.3298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:05:24.139Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:05:24.353Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:05:24.389Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.9636,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:05:24.391Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:05:24.423Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6837,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:05:24.426Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:05:24.467Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:05:24.509Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.9938,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:05:24.512Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:05:24.548Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6124,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:05:24.551Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:05:24.646Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:05:24.685Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.0152,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:05:24.687Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:05:24.719Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.6299,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:05:24.721Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:06:19.602Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:06:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":114.8251,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:06:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:06:19.775Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.8575,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:06:19.779Z","event":"tenancy.ok","rid":null,"ms":177,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:06:19.842Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:06:19.926Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:06:19.952Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:06:19.995Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:06:20.010Z","event":"tenants.lookup.exact.ok","rid":null,"ms":79.916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:06:20.013Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:06:20.016Z","event":"tenants.lookup.exact.ok","rid":null,"ms":171.5947,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:06:20.020Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:06:20.023Z","event":"tenants.lookup.exact.ok","rid":null,"ms":69.3241,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:06:20.024Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:06:20.047Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.0992,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:06:20.050Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:06:20.062Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.4266,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:06:20.064Z","event":"tenancy.ok","rid":null,"ms":138,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:06:20.090Z","event":"tenants.lookup.default.ok","rid":null,"ms":68.3131,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:06:20.092Z","event":"tenancy.ok","rid":null,"ms":250,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:06:20.107Z","event":"tenants.lookup.default.ok","rid":null,"ms":82.0363,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:06:20.125Z","event":"tenancy.ok","rid":null,"ms":172,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:06:20.154Z","event":"tenants.lookup.default.ok","rid":null,"ms":103.1354,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:06:20.157Z","event":"tenancy.ok","rid":null,"ms":162,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:06:20.582Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:06:20.725Z","event":"tenants.lookup.exact.ok","rid":null,"ms":140.9875,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:06:20.729Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:06:20.772Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.2998,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:06:20.774Z","event":"tenancy.ok","rid":null,"ms":192,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:06:21.095Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:06:21.122Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:06:21.136Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.0943,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:06:21.137Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:06:21.176Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.4747,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:06:21.178Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:06:21.181Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.2275,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:06:21.182Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:06:21.220Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.3488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:06:21.222Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:06:21.255Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:06:21.385Z","event":"tenants.lookup.exact.ok","rid":null,"ms":127.5955,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:06:21.387Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:06:21.414Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:06:21.433Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.2856,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:06:21.436Z","event":"tenancy.ok","rid":null,"ms":180,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:06:21.455Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.3546,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:06:21.457Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:06:21.503Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.8917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:06:21.506Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:07:19.604Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:07:19.634Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.764,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:07:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:07:19.726Z","event":"tenants.lookup.default.ok","rid":null,"ms":88.5756,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:07:19.730Z","event":"tenancy.ok","rid":null,"ms":126,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:07:19.971Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:07:19.992Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:07:20.015Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.7443,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:07:20.017Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:07:20.021Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:07:20.036Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.6858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:07:20.039Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:07:20.051Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4402,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:07:20.054Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:07:20.068Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.9469,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:07:20.069Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:07:20.090Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.9174,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:07:20.093Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:07:20.112Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.93,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:07:20.115Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:07:20.270Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:07:20.313Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:07:20.316Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:07:20.351Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:07:20.352Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:07:20.771Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:07:20.806Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:07:20.818Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.0498,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:07:20.821Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:07:20.849Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.188,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:07:20.851Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:07:20.853Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:07:20.855Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:07:20.895Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.017,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:07:20.898Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:07:20.936Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:07:20.956Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:07:20.972Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.2238,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:07:20.975Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:07:21.000Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.5763,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:07:21.002Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:07:21.027Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.1326,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:07:21.030Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:07:21.049Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.0514,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:07:21.051Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:07:21.145Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:07:21.170Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.4036,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:07:21.174Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:07:21.231Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.0287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:07:21.233Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:08:19.601Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:08:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3383,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:08:19.634Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:08:19.671Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.7438,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:08:19.672Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:08:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:08:19.772Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.4694,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:08:19.774Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:08:19.805Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.051,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:08:19.807Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:08:19.855Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:08:19.861Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:08:19.887Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.3441,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:08:19.889Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:08:19.891Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.4942,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:08:19.895Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:08:19.912Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:08:19.925Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3456,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:08:19.929Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:08:19.942Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.4741,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:08:19.950Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:08:19.969Z","event":"tenants.lookup.exact.ok","rid":null,"ms":54.4992,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:08:19.971Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:08:20.014Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.9339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:08:20.016Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:08:20.109Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:08:20.147Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.6362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:08:20.149Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:08:20.186Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.2316,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:08:20.189Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:08:20.317Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:08:20.352Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.8948,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:08:20.354Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:08:20.387Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.3537,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:08:20.390Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:08:20.507Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:08:20.546Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.1203,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:08:20.548Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:08:20.589Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.5369,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:08:20.594Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:08:20.903Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:08:20.948Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.8223,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:08:20.950Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:08:21.097Z","event":"tenants.lookup.default.ok","rid":null,"ms":144.6955,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:08:21.098Z","event":"tenancy.ok","rid":null,"ms":195,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:08:21.270Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:08:21.440Z","event":"tenants.lookup.exact.ok","rid":null,"ms":167.5256,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:08:21.443Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:08:21.487Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.7451,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:08:21.492Z","event":"tenancy.ok","rid":null,"ms":222,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:09:19.596Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:09:19.655Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.9707,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:09:19.657Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:09:19.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:09:19.682Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.3086,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:09:19.685Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:09:19.721Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.3337,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:09:19.724Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:09:19.752Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.6927,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:09:19.756Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:09:19.850Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:09:19.950Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:09:20.001Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:09:20.050Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:09:20.099Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:09:20.213Z","event":"tenants.lookup.exact.ok","rid":null,"ms":359.6841,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:09:20.215Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:09:20.219Z","event":"tenants.lookup.exact.ok","rid":null,"ms":215.5704,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:09:20.221Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:09:20.225Z","event":"tenants.lookup.exact.ok","rid":null,"ms":273.0503,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:09:20.227Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:09:20.230Z","event":"tenants.lookup.exact.ok","rid":null,"ms":177.3739,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:09:20.231Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:09:20.233Z","event":"tenants.lookup.exact.ok","rid":null,"ms":132.4882,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:09:20.235Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:09:20.251Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3087,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:09:20.254Z","event":"tenancy.ok","rid":null,"ms":404,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:09:20.265Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.2283,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:09:20.266Z","event":"tenancy.ok","rid":null,"ms":316,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:09:20.278Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.4872,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:09:20.279Z","event":"tenancy.ok","rid":null,"ms":229,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:09:20.302Z","event":"tenants.lookup.default.ok","rid":null,"ms":78.1362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:09:20.306Z","event":"tenancy.ok","rid":null,"ms":305,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:09:20.318Z","event":"tenants.lookup.default.ok","rid":null,"ms":82.0012,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:09:20.323Z","event":"tenancy.ok","rid":null,"ms":224,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:09:20.845Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:09:20.946Z","event":"tenants.lookup.exact.ok","rid":null,"ms":98.8912,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:09:20.948Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:09:20.993Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.9079,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:09:20.995Z","event":"tenancy.ok","rid":null,"ms":150,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:09:21.039Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:09:21.065Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.4308,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:09:21.067Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:09:21.111Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.1589,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:09:21.113Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:09:21.129Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:09:21.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":623.7582,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:09:21.758Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:09:21.787Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.9201,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:09:21.790Z","event":"tenancy.ok","rid":null,"ms":661,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T20:10:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:10:19.638Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.4014,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:10:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:10:19.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:10:19.681Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.1882,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:10:19.683Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:10:19.710Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.348,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:10:19.712Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:10:19.734Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.4135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:10:19.736Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:10:19.822Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:10:19.829Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:10:19.847Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.0877,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:10:19.848Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:10:19.851Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.5775,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:10:19.852Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:10:19.868Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9201,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:10:19.873Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:10:19.893Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.7608,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:10:19.895Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:10:19.932Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:10:19.948Z","event":"tenants.lookup.exact.ok","rid":null,"ms":13.6757,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:10:19.950Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:10:19.988Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5208,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:10:19.991Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:10:20.087Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:10:20.127Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.3618,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:10:20.130Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:10:20.167Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0555,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:10:20.169Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:10:20.280Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:10:20.323Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.3537,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:10:20.326Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:10:20.368Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.7593,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:10:20.370Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:10:20.429Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:10:20.467Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.511,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:10:20.469Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:10:20.510Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.8534,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:10:20.513Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:10:20.540Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:10:20.553Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:10:20.567Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.5841,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:10:20.569Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:10:20.588Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.5375,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:10:20.590Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:10:20.592Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.7034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:10:20.593Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:10:20.630Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.795,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:10:20.633Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:11:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:11:19.614Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.6144,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:11:19.617Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:11:19.653Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.8723,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:11:19.655Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:11:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:11:19.823Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.334,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:11:19.825Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:11:19.856Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:11:19.860Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0235,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:11:19.862Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:11:19.894Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.4107,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:11:19.898Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:11:19.943Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.9333,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:11:19.945Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:11:20.021Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:11:20.055Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.1208,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:11:20.057Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:11:20.091Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9253,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:11:20.093Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:11:20.176Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:11:20.211Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0299,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:11:20.213Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:11:20.252Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.9223,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:11:20.255Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:11:20.277Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:11:20.319Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.6943,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:11:20.322Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:11:20.377Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.8194,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:11:20.378Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:11:20.664Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:11:20.703Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.8916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:11:20.706Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:11:20.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.084,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:11:20.752Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:11:20.803Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:11:20.851Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:11:20.858Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.9588,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:11:20.859Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:11:20.894Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3627,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:11:20.896Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:11:20.910Z","event":"tenants.lookup.exact.ok","rid":null,"ms":54.2767,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:11:20.911Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:11:20.949Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3454,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:11:20.953Z","event":"tenancy.ok","rid":null,"ms":102,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:11:21.159Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:11:21.217Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.4061,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:11:21.220Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:11:21.249Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.2046,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:11:21.253Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:12:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:12:19.631Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.9437,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:12:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:12:19.651Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:12:19.655Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.2239,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:12:19.656Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:12:19.696Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.6515,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:12:19.699Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:12:19.857Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:12:19.916Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:12:20.024Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:12:20.039Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:12:20.054Z","event":"tenants.lookup.default.ok","rid":null,"ms":352.8604,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:12:20.057Z","event":"tenancy.ok","rid":null,"ms":406,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:12:20.070Z","event":"tenants.lookup.exact.ok","rid":null,"ms":210.3712,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:12:20.074Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:12:20.078Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.5293,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:12:20.079Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:12:20.081Z","event":"tenants.lookup.exact.ok","rid":null,"ms":161.5134,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:12:20.083Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:12:20.087Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.4744,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:12:20.091Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:12:20.109Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4344,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:12:20.111Z","event":"tenancy.ok","rid":null,"ms":254,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:12:20.127Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.8228,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:12:20.132Z","event":"tenancy.ok","rid":null,"ms":108,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:12:20.159Z","event":"tenants.lookup.default.ok","rid":null,"ms":73.8238,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:12:20.162Z","event":"tenancy.ok","rid":null,"ms":246,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:12:20.186Z","event":"tenants.lookup.default.ok","rid":null,"ms":92.7614,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:12:20.192Z","event":"tenancy.ok","rid":null,"ms":153,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:12:20.944Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:12:20.998Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.9237,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:12:21.001Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:12:21.035Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.8734,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:12:21.037Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:12:21.056Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:12:21.093Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:12:21.104Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.7203,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:12:21.107Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:12:21.281Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:12:21.285Z","event":"tenants.lookup.default.ok","rid":null,"ms":176.9262,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:12:21.288Z","event":"tenancy.ok","rid":null,"ms":231,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:12:21.311Z","event":"tenants.lookup.exact.ok","rid":null,"ms":210.7182,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:12:21.317Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:12:21.320Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.7493,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:12:21.326Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:12:21.359Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.947,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:12:21.361Z","event":"tenancy.ok","rid":null,"ms":268,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:12:21.377Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.8584,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:12:21.382Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:13:19.604Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:13:19.633Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.6338,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:13:19.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:13:19.667Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:13:19.672Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0026,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:13:19.674Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:13:19.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.9221,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:13:19.716Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:13:19.820Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:13:19.875Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:13:19.916Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:13:19.971Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:13:20.603Z","event":"tenants.lookup.default.ok","rid":null,"ms":884.1497,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:13:20.606Z","event":"tenancy.ok","rid":null,"ms":939,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:13:20.621Z","event":"tenants.lookup.exact.ok","rid":null,"ms":798.8041,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:13:20.624Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:13:20.626Z","event":"tenants.lookup.exact.ok","rid":null,"ms":745.4393,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:13:20.630Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:13:20.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":660.6738,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:13:20.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:13:20.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":717.5329,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:13:20.640Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:13:20.729Z","event":"tenants.lookup.default.ok","rid":null,"ms":104.0376,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:13:20.732Z","event":"tenancy.ok","rid":null,"ms":912,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:13:20.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":115.3922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:13:20.753Z","event":"tenancy.ok","rid":null,"ms":878,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:13:20.761Z","event":"tenants.lookup.default.ok","rid":null,"ms":123.2107,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:13:20.764Z","event":"tenancy.ok","rid":null,"ms":793,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:13:20.787Z","event":"tenants.lookup.default.ok","rid":null,"ms":144.509,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:13:20.789Z","event":"tenancy.ok","rid":null,"ms":873,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:13:20.809Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:13:21.137Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:13:21.157Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:13:21.222Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:13:21.971Z","event":"tenants.lookup.exact.ok","rid":null,"ms":1158.2946,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:13:21.975Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:13:21.979Z","event":"tenants.lookup.exact.ok","rid":null,"ms":818.7483,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:13:21.980Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:13:21.986Z","event":"tenants.lookup.exact.ok","rid":null,"ms":846.4381,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:13:21.988Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:13:21.991Z","event":"tenants.lookup.exact.ok","rid":null,"ms":766.1294,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:13:21.992Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:13:21.994Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.7131,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:13:21.995Z","event":"tenancy.ok","rid":null,"ms":1186,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:13:22.016Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:13:22.019Z","event":"tenancy.ok","rid":null,"ms":797,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:13:22.027Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.9957,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:13:22.038Z","event":"tenancy.ok","rid":null,"ms":881,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:13:22.052Z","event":"tenants.lookup.default.ok","rid":null,"ms":62.6949,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:13:22.054Z","event":"tenancy.ok","rid":null,"ms":917,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:14:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:14:19.612Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.4733,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:14:19.614Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:14:19.650Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.683,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:14:19.652Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:14:19.674Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:14:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.3504,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:14:19.722Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:14:19.755Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9803,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:14:19.757Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:14:19.902Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:14:19.957Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:14:20.033Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:14:20.064Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:14:20.174Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:14:20.188Z","event":"tenants.lookup.exact.ok","rid":null,"ms":229.8829,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:14:20.190Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:14:20.192Z","event":"tenants.lookup.exact.ok","rid":null,"ms":157.2959,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:14:20.194Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:14:20.199Z","event":"tenants.lookup.exact.ok","rid":null,"ms":131.5546,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:14:20.203Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:14:20.205Z","event":"tenants.lookup.exact.ok","rid":null,"ms":301.3893,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:14:20.206Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:14:20.215Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.3819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:14:20.219Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:14:20.221Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.9798,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:14:20.223Z","event":"tenancy.ok","rid":null,"ms":266,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:14:20.235Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.9181,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:14:20.237Z","event":"tenancy.ok","rid":null,"ms":173,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:14:20.253Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.5711,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:14:20.258Z","event":"tenancy.ok","rid":null,"ms":356,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:14:20.279Z","event":"tenants.lookup.default.ok","rid":null,"ms":83.0616,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:14:20.283Z","event":"tenancy.ok","rid":null,"ms":250,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:14:20.291Z","event":"tenants.lookup.default.ok","rid":null,"ms":70.4876,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:14:20.300Z","event":"tenancy.ok","rid":null,"ms":126,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:14:20.814Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:14:20.824Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:14:20.919Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:14:20.922Z","event":"tenants.lookup.exact.ok","rid":null,"ms":105.2397,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:14:20.928Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:14:20.932Z","event":"tenants.lookup.exact.ok","rid":null,"ms":105.719,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:14:20.933Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:14:20.949Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.055,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:14:20.951Z","event":"tenancy.ok","rid":null,"ms":137,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:14:20.966Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.3779,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:14:20.968Z","event":"tenancy.ok","rid":null,"ms":144,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:14:20.982Z","event":"tenants.lookup.exact.ok","rid":null,"ms":61.4402,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:14:20.984Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:14:21.019Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6403,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:14:21.021Z","event":"tenancy.ok","rid":null,"ms":102,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T20:15:19.604Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:15:19.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.2579,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:15:19.643Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:15:19.683Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:15:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6107,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:15:19.688Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:15:19.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4918,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:15:19.716Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:15:19.753Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8184,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:15:19.755Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:15:19.860Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:15:19.892Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.2987,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:15:19.894Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:15:19.902Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:15:19.932Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:15:19.938Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.4684,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:15:19.941Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:15:19.958Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.3275,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:15:19.964Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:15:19.982Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.9499,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:15:19.984Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:15:20.010Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.572,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:15:20.013Z","event":"tenancy.ok","rid":null,"ms":111,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:15:20.024Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.2201,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:15:20.026Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:15:20.183Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:15:20.208Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:15:20.231Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.4887,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:15:20.234Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:15:20.278Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.7954,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:15:20.281Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:15:20.298Z","event":"tenants.lookup.exact.ok","rid":null,"ms":85.1878,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:15:20.299Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:15:20.340Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.0529,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:15:20.349Z","event":"tenancy.ok","rid":null,"ms":141,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:15:20.843Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:15:20.852Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:15:20.870Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.7084,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:15:20.872Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:15:20.958Z","event":"tenants.lookup.exact.ok","rid":null,"ms":97.2312,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:15:20.965Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:15:20.994Z","event":"tenants.lookup.default.ok","rid":null,"ms":120.8847,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:15:21.009Z","event":"tenancy.ok","rid":null,"ms":166,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:15:21.030Z","event":"tenants.lookup.default.ok","rid":null,"ms":62.4219,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:15:21.032Z","event":"tenancy.ok","rid":null,"ms":180,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:15:21.087Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:15:21.134Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.8539,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:15:21.136Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:15:21.180Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:15:21.182Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:16:19.605Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:16:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.564,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:16:19.634Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:16:19.663Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:16:19.678Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.4581,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:16:19.680Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:16:19.701Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.3039,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:16:19.704Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:16:19.737Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:16:19.752Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.8457,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:16:19.755Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:16:19.769Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5766,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:16:19.771Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:16:19.810Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.6197,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:16:19.812Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:16:19.876Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:16:19.920Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.295,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:16:19.923Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:16:19.965Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.2973,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:16:19.967Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:16:19.984Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:16:20.020Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:16:20.028Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.6126,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:16:20.030Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:16:20.051Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.638,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:16:20.053Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:16:20.059Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.3386,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:16:20.061Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:16:20.094Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4066,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:16:20.096Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:16:20.339Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:16:20.374Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.7603,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:16:20.377Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:16:20.414Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:16:20.416Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:16:20.518Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:16:20.558Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.0866,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:16:20.561Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:16:20.593Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.9795,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:16:20.594Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:16:20.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:16:20.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9481,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:16:20.643Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:16:20.678Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.1331,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:16:20.680Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:16:21.103Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:16:21.131Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.5124,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:16:21.133Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:16:21.150Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.5489,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:16:21.155Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:17:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:17:19.634Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.5224,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:17:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:17:19.662Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.8657,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:17:19.664Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:17:19.846Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:17:19.875Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2603,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:17:19.877Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:17:19.898Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:17:19.913Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3292,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:17:19.916Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:17:19.938Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:17:19.949Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.0687,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:17:19.950Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:17:19.976Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0157,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:17:19.978Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:17:19.980Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.1638,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:17:19.981Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:17:20.027Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.6021,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:17:20.030Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:17:20.094Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:17:20.131Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.7651,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:17:20.134Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:17:20.175Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.1255,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:17:20.177Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:17:20.481Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:17:20.534Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.5875,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:17:20.540Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:17:20.572Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.5659,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:17:20.574Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:17:20.655Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:17:20.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:17:20.700Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:17:20.710Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.3917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:17:20.712Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:17:20.714Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.5936,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:17:20.715Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:17:20.733Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.1805,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:17:20.740Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:17:20.743Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6683,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:17:20.744Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:17:20.761Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.9263,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:17:20.763Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:17:20.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.8824,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:17:20.793Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:17:20.838Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:17:20.876Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.449,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:17:20.878Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:17:20.923Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.4669,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:17:20.926Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:18:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:18:19.642Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:18:19.725Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:18:19.809Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:18:19.841Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:18:19.910Z","event":"tenants.lookup.exact.ok","rid":null,"ms":317.4389,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:18:19.911Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:18:19.913Z","event":"tenants.lookup.exact.ok","rid":null,"ms":268.1155,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:18:19.914Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:18:19.919Z","event":"tenants.lookup.exact.ok","rid":null,"ms":189.0819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:18:19.920Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:18:19.923Z","event":"tenants.lookup.exact.ok","rid":null,"ms":112.2981,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:18:19.924Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:18:19.926Z","event":"tenants.lookup.exact.ok","rid":null,"ms":83.8466,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:18:19.928Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:18:19.941Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8092,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:18:19.943Z","event":"tenancy.ok","rid":null,"ms":353,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:18:19.960Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.2277,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:18:19.966Z","event":"tenancy.ok","rid":null,"ms":324,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:18:19.979Z","event":"tenants.lookup.default.ok","rid":null,"ms":57.5698,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:18:19.987Z","event":"tenancy.ok","rid":null,"ms":262,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:18:20.006Z","event":"tenants.lookup.default.ok","rid":null,"ms":75.9527,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:18:20.008Z","event":"tenancy.ok","rid":null,"ms":167,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:18:20.020Z","event":"tenants.lookup.default.ok","rid":null,"ms":94.5892,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:18:20.022Z","event":"tenancy.ok","rid":null,"ms":213,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:18:20.444Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:18:20.449Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:18:20.526Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:18:20.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:18:20.664Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:18:20.674Z","event":"tenants.lookup.exact.ok","rid":null,"ms":228.7641,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:18:20.676Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:18:20.679Z","event":"tenants.lookup.exact.ok","rid":null,"ms":224.549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:18:20.680Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:18:20.682Z","event":"tenants.lookup.exact.ok","rid":null,"ms":154.8332,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:18:20.684Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:18:20.686Z","event":"tenants.lookup.exact.ok","rid":null,"ms":64.4065,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:18:20.692Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:18:20.722Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.4282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:18:20.726Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:18:20.729Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4697,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:18:20.730Z","event":"tenancy.ok","rid":null,"ms":113,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:18:20.745Z","event":"tenants.lookup.default.ok","rid":null,"ms":59.3204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:18:20.746Z","event":"tenancy.ok","rid":null,"ms":221,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:18:20.761Z","event":"tenants.lookup.default.ok","rid":null,"ms":79.9054,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:18:20.763Z","event":"tenancy.ok","rid":null,"ms":314,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:18:20.792Z","event":"tenants.lookup.default.ok","rid":null,"ms":114.5399,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:18:20.794Z","event":"tenancy.ok","rid":null,"ms":350,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:18:20.816Z","event":"tenants.lookup.default.ok","rid":null,"ms":87.3583,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:18:20.821Z","event":"tenancy.ok","rid":null,"ms":157,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:19:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:19:19.759Z","event":"tenants.lookup.exact.ok","rid":null,"ms":163.8341,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:19:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:19:19.817Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.4446,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:19:19.821Z","event":"tenancy.ok","rid":null,"ms":228,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:19:19.845Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:19:19.853Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:19:19.858Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:19:19.879Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.6955,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:19:19.881Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:19:19.883Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.5602,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:19:19.885Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:19:19.913Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.3123,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:19:19.915Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:19:19.925Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2351,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:19:19.927Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:19:19.945Z","event":"tenants.lookup.exact.ok","rid":null,"ms":71.3782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:19:19.947Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:19:20.012Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:19:20.276Z","event":"tenants.lookup.default.ok","rid":null,"ms":324.4955,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:19:20.279Z","event":"tenancy.ok","rid":null,"ms":421,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:19:20.290Z","event":"tenants.lookup.exact.ok","rid":null,"ms":275.4411,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:19:20.296Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:19:20.334Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1874,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:19:20.337Z","event":"tenancy.ok","rid":null,"ms":325,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:19:20.475Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:19:20.574Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:19:20.829Z","event":"tenants.lookup.exact.ok","rid":null,"ms":252.4003,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:19:20.832Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:19:20.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":358.9955,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:19:20.842Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:19:20.888Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.552,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:19:20.891Z","event":"tenancy.ok","rid":null,"ms":317,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:19:20.905Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.6972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:19:20.907Z","event":"tenancy.ok","rid":null,"ms":432,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:19:20.926Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:19:20.967Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7645,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:19:20.970Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:19:21.028Z","event":"tenants.lookup.default.ok","rid":null,"ms":56.8595,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:19:21.031Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:19:21.114Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:19:21.426Z","event":"tenants.lookup.exact.ok","rid":null,"ms":310.3235,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:19:21.428Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:19:21.456Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:19:21.459Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.9787,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:19:21.462Z","event":"tenancy.ok","rid":null,"ms":348,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:19:21.493Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.571,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:19:21.507Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:19:21.536Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.9503,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:19:21.539Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T20:20:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:20:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.8314,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:20:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:20:19.653Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.1416,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:20:19.656Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:20:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:20:19.763Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.8016,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:20:19.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:20:19.798Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4169,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:20:19.803Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:20:19.859Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:20:19.892Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5802,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:20:19.894Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:20:19.918Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:20:19.938Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.1778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:20:19.940Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:20:19.955Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.7485,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:20:19.957Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:20:19.993Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6263,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:20:19.995Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:20:20.137Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:20:20.177Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.7531,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:20:20.181Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:20:20.198Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:20:20.216Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9579,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:20:20.220Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:20:20.233Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.4798,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:20:20.240Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:20:20.284Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.2239,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:20:20.286Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:20:20.493Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:20:20.536Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.3046,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:20:20.538Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:20:20.575Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0087,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:20:20.579Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:20:20.637Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:20:20.674Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.3317,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:20:20.676Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:20:20.715Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9706,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:20:20.718Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:20:20.958Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:20:20.997Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.1378,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:20:20.999Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:20:21.034Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:20:21.036Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:20:21.148Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:20:21.181Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5463,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:20:21.183Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:20:21.216Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.8541,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:20:21.221Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:21:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:21:19.619Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:21:19.621Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:21:19.653Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:21:19.656Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.0624,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:21:19.658Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:21:19.704Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.5216,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:21:19.714Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:21:19.755Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.502,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:21:19.757Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:21:19.813Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:21:19.832Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:21:19.891Z","event":"tenants.lookup.exact.ok","rid":null,"ms":71.6485,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:21:19.893Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:21:19.898Z","event":"tenants.lookup.exact.ok","rid":null,"ms":60.8389,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:21:19.900Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:21:19.938Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.0424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:21:19.941Z","event":"tenancy.ok","rid":null,"ms":109,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:21:19.957Z","event":"tenants.lookup.default.ok","rid":null,"ms":62.8967,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:21:19.959Z","event":"tenancy.ok","rid":null,"ms":146,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:21:19.978Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:21:20.015Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0787,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:21:20.022Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:21:20.054Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.3862,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:21:20.057Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:21:20.130Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:21:20.184Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.81,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:21:20.186Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:21:20.219Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5173,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:21:20.221Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:21:20.295Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:21:20.334Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.6492,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:21:20.336Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:21:20.379Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.9263,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:21:20.382Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:21:20.521Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:21:20.534Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:21:20.555Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8244,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:21:20.556Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:21:20.562Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.3131,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:21:20.565Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:21:20.606Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6329,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:21:20.610Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:21:20.625Z","event":"tenants.lookup.default.ok","rid":null,"ms":66.8578,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:21:20.630Z","event":"tenancy.ok","rid":null,"ms":108,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:21:20.673Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:21:20.717Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.4561,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:21:20.718Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:21:20.755Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3041,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:21:20.757Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:22:19.611Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:22:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.1373,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:22:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:22:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.7566,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:22:19.688Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:22:19.769Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:22:19.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5084,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:22:19.803Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:22:19.859Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.3978,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:22:19.865Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:22:19.962Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:22:19.988Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:22:20.003Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.5936,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:22:20.005Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:22:20.044Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.0629,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:22:20.047Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:22:20.059Z","event":"tenants.lookup.exact.ok","rid":null,"ms":68.6419,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:22:20.064Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:22:20.102Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.5169,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:22:20.104Z","event":"tenancy.ok","rid":null,"ms":116,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:22:20.183Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:22:20.223Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.4908,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:22:20.227Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:22:20.258Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.9298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:22:20.261Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:22:20.643Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:22:20.702Z","event":"tenants.lookup.exact.ok","rid":null,"ms":55.0548,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:22:20.703Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:22:20.748Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.479,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:22:20.750Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:22:20.960Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:22:20.998Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6993,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:22:21.001Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:22:21.049Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:22:21.053Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.1034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:22:21.059Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:22:21.105Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.9378,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:22:21.106Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:22:21.135Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.7235,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:22:21.137Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:22:21.288Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:22:21.318Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.9743,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:22:21.321Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:22:21.356Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.0581,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:22:21.360Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:22:21.493Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:22:21.601Z","event":"tenants.lookup.exact.ok","rid":null,"ms":103.2776,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:22:21.603Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:22:21.634Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.7148,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:22:21.636Z","event":"tenancy.ok","rid":null,"ms":143,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:23:19.648Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:23:19.688Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.1882,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:23:19.691Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:23:19.735Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.4831,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:23:19.738Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:23:19.767Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:23:19.830Z","event":"tenants.lookup.exact.ok","rid":null,"ms":57.7162,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:23:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:23:19.859Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.349,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:23:19.861Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:23:20.019Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:23:20.034Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:23:20.063Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:23:20.071Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.0373,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:23:20.074Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:23:20.077Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.9635,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:23:20.079Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:23:20.097Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.2758,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:23:20.099Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:23:20.103Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.9675,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:23:20.105Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:23:20.120Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.2729,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:23:20.123Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:23:20.148Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.3782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:23:20.151Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:23:21.104Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:23:21.133Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5244,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:23:21.135Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:23:21.164Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.9374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:23:21.166Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:23:21.423Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:23:21.464Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.4427,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:23:21.465Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:23:21.499Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:23:21.500Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:23:21.942Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:23:21.979Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.2491,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:23:21.981Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:23:21.995Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:23:22.025Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.3403,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:23:22.027Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:23:22.029Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.5918,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:23:22.030Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:23:22.045Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.4659,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:23:22.046Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:23:22.226Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:23:22.262Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.1394,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:23:22.265Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:23:22.289Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0665,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:23:22.293Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:24:19.595Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:24:19.619Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.0748,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:24:19.622Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:24:19.652Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:24:19.657Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.8851,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:24:19.659Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:24:19.682Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.5161,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:24:19.683Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:24:19.716Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.6471,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:24:19.717Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:24:19.813Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:24:19.841Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.3121,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:24:19.843Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:24:19.886Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.5409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:24:19.888Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:24:20.096Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:24:20.115Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:24:20.135Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.0586,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:24:20.138Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:24:20.141Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.978,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:24:20.143Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:24:20.179Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.2466,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:24:20.182Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:24:20.192Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.6984,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:24:20.195Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:24:20.305Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:24:20.336Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.5115,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:24:20.339Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:24:20.354Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:24:20.382Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.4444,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:24:20.385Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:24:20.398Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.11,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:24:20.401Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:24:20.440Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.5861,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:24:20.443Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:24:20.616Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:24:20.656Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.5783,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:24:20.660Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:24:20.696Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0194,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:24:20.699Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:24:20.797Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:24:20.859Z","event":"tenants.lookup.exact.ok","rid":null,"ms":59.0977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:24:20.861Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:24:20.901Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.1437,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:24:20.908Z","event":"tenancy.ok","rid":null,"ms":111,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:24:20.944Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:24:20.962Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.7016,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:24:20.965Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:24:20.996Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6052,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:24:20.998Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T20:25:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:25:19.640Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.2008,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:25:19.642Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:25:19.688Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:25:19.693Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.7257,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:25:19.696Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:25:19.723Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6365,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:25:19.726Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:25:19.766Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3766,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:25:19.771Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:25:19.887Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:25:19.924Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.6354,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:25:19.927Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:25:19.971Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.119,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:25:19.974Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:25:20.020Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:25:20.062Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.2619,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:25:20.064Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:25:20.098Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.8141,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:25:20.101Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:25:20.243Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:25:20.277Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.6811,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:25:20.278Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:25:20.299Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.4476,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:25:20.305Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:25:20.492Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:25:20.516Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.5687,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:25:20.518Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:25:20.569Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.6659,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:25:20.572Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:25:20.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:25:20.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.3894,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:25:20.629Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:25:20.661Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.817,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:25:20.663Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:25:20.795Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:25:20.837Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.8557,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:25:20.841Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:25:20.881Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1104,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:25:20.883Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:25:20.896Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:25:20.941Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.2245,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:25:20.943Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:25:20.976Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9433,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:25:20.978Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:25:21.162Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:25:21.196Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.9389,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:25:21.201Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:25:21.242Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.809,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:25:21.247Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:26:19.605Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:26:19.659Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.9282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:26:19.661Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:26:19.710Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.1547,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:26:19.712Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:26:19.898Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:26:19.933Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:26:19.947Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.7522,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:26:19.950Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:26:19.988Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.444,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:26:19.990Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:26:19.993Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6188,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:26:19.996Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:26:20.034Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.8645,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:26:20.037Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:26:20.170Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:26:20.198Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:26:20.204Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.8983,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:26:20.205Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:26:20.238Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.7327,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:26:20.240Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:26:20.246Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.2286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:26:20.250Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:26:20.293Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.0026,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:26:20.295Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:26:20.613Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:26:20.678Z","event":"tenants.lookup.exact.ok","rid":null,"ms":59.3914,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:26:20.681Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:26:20.725Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2643,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:26:20.727Z","event":"tenancy.ok","rid":null,"ms":114,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:26:20.867Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:26:20.922Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.9673,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:26:20.925Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:26:20.941Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:26:20.973Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.2513,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:26:20.975Z","event":"tenancy.ok","rid":null,"ms":108,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:26:20.993Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.5472,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:26:20.995Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:26:21.030Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0422,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:26:21.033Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:26:21.125Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:26:21.246Z","event":"tenants.lookup.exact.ok","rid":null,"ms":118.8921,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:26:21.249Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:26:21.317Z","event":"tenants.lookup.default.ok","rid":null,"ms":65.3509,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:26:21.321Z","event":"tenancy.ok","rid":null,"ms":195,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:26:21.354Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:26:21.400Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.5934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:26:21.403Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:26:21.466Z","event":"tenants.lookup.default.ok","rid":null,"ms":59.9752,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:26:21.468Z","event":"tenancy.ok","rid":null,"ms":114,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:27:19.624Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:27:19.629Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:27:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.8434,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:27:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:27:19.654Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.6667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:27:19.656Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:27:19.684Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.2577,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:27:19.686Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:27:19.699Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.9762,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:27:19.704Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:27:19.860Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:27:19.901Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.7758,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:27:19.904Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:27:19.939Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4578,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:27:19.941Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:27:19.999Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:27:20.039Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:27:20.042Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.0859,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:27:20.043Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:27:20.061Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:27:20.083Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.0624,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:27:20.086Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:27:20.089Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.7873,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:27:20.091Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:27:20.103Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.5391,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:27:20.104Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:27:20.116Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.3015,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:27:20.119Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:27:20.130Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.7572,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:27:20.133Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:27:20.319Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:27:20.359Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.56,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:27:20.361Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:27:20.379Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9089,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:27:20.382Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:27:20.733Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:27:20.779Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.7399,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:27:20.781Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:27:20.819Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.8352,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:27:20.821Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:27:20.936Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:27:20.984Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.8861,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:27:20.986Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:27:21.025Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:27:21.029Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.0716,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:27:21.032Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:27:21.068Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.3252,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:27:21.070Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:27:21.103Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:27:21.106Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:28:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:28:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.1797,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:28:19.637Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:28:19.655Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:28:19.687Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.8658,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:28:19.690Z","event":"tenancy.ok","rid":null,"ms":102,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:28:19.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":55.9944,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:28:19.715Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:28:19.755Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5507,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:28:19.756Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:28:19.983Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:28:20.020Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5905,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:28:20.021Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:28:20.038Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.9212,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:28:20.041Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:28:20.163Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:28:20.202Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.4593,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:28:20.205Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:28:20.240Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5404,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:28:20.243Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:28:20.605Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:28:20.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.251,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:28:20.642Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:28:20.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.783,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:28:20.676Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:28:20.756Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:28:20.795Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.0708,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:28:20.797Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:28:20.837Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.7313,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:28:20.840Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:28:21.056Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:28:21.092Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.155,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:28:21.095Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:28:21.119Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.472,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:28:21.122Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:28:21.338Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:28:21.352Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:28:21.390Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.0571,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:28:21.392Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:28:21.395Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.8802,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:28:21.397Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:28:21.427Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.1368,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:28:21.430Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:28:21.451Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.6523,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:28:21.457Z","event":"tenancy.ok","rid":null,"ms":119,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:28:22.016Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:28:22.059Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.1842,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:28:22.061Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:28:22.096Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6673,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:28:22.099Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:29:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:29:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.4131,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:29:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:29:19.668Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.5923,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:29:19.670Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:29:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:29:19.731Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.397,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:29:19.733Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:29:19.771Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.0334,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:29:19.773Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:29:19.889Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:29:19.952Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.5422,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:29:19.954Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:29:19.996Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.5237,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:29:20.004Z","event":"tenancy.ok","rid":null,"ms":115,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:29:20.138Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:29:20.160Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.1084,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:29:20.163Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:29:20.202Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8841,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:29:20.204Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:29:20.240Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:29:20.283Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.2592,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:29:20.285Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:29:20.316Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6285,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:29:20.318Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:29:20.407Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:29:20.441Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5964,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:29:20.443Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:29:20.474Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.1653,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:29:20.477Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:29:20.661Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:29:20.700Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.0179,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:29:20.702Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:29:20.725Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:29:20.734Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.4492,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:29:20.736Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:29:20.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.8821,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:29:20.757Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:29:20.782Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.485,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:29:20.784Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:29:20.950Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:29:20.977Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2684,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:29:20.980Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:29:21.002Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.8486,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:29:21.004Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:29:21.211Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:29:21.250Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.7176,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:29:21.252Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:29:21.283Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.2164,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:29:21.285Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T20:30:19.613Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:30:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.0167,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:30:19.654Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:30:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:30:19.821Z","event":"tenants.lookup.default.ok","rid":null,"ms":162.8201,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:30:19.826Z","event":"tenancy.ok","rid":null,"ms":213,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:30:19.839Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.3891,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:30:19.846Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:30:19.915Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.8697,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:30:19.918Z","event":"tenancy.ok","rid":null,"ms":132,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:30:19.994Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:30:20.037Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:30:20.101Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:30:20.151Z","event":"tenants.lookup.exact.ok","rid":null,"ms":152.1113,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:30:20.154Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:30:20.159Z","event":"tenants.lookup.exact.ok","rid":null,"ms":115.3713,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:30:20.161Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:30:20.164Z","event":"tenants.lookup.exact.ok","rid":null,"ms":61.1182,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:30:20.166Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:30:20.201Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.6182,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:30:20.204Z","event":"tenancy.ok","rid":null,"ms":210,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:30:20.220Z","event":"tenants.lookup.default.ok","rid":null,"ms":57.3617,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:30:20.225Z","event":"tenancy.ok","rid":null,"ms":188,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:30:20.237Z","event":"tenants.lookup.default.ok","rid":null,"ms":69.8033,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:30:20.239Z","event":"tenancy.ok","rid":null,"ms":138,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:30:20.742Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:30:20.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":89.3716,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:30:20.837Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:30:20.850Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:30:20.895Z","event":"tenants.lookup.default.ok","rid":null,"ms":56.1105,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:30:20.897Z","event":"tenancy.ok","rid":null,"ms":155,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:30:20.913Z","event":"tenants.lookup.exact.ok","rid":null,"ms":59.9769,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:30:20.917Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:30:20.964Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.487,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:30:20.966Z","event":"tenancy.ok","rid":null,"ms":116,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:30:21.167Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:30:21.180Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:30:21.210Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.2582,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:30:21.212Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:30:21.214Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3045,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:30:21.216Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:30:21.244Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.6369,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:30:21.249Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:30:21.268Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.1916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:30:21.274Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:30:21.384Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:30:21.493Z","event":"tenants.lookup.exact.ok","rid":null,"ms":107.2814,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:30:21.495Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:30:21.516Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.8362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:30:21.518Z","event":"tenancy.ok","rid":null,"ms":134,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:31:21.398Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:31:21.461Z","event":"tenants.lookup.exact.ok","rid":null,"ms":59.9585,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:31:21.464Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:31:21.514Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.7396,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:31:21.516Z","event":"tenancy.ok","rid":null,"ms":118,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:31:22.223Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:31:22.263Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.7267,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:31:22.266Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:31:22.295Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:31:22.302Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:31:22.308Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:31:22.334Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.2573,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:31:22.338Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:31:22.365Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.7135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:31:22.369Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:31:22.695Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:31:22.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1329,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:31:22.722Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:31:22.764Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.2537,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:31:22.767Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:31:22.944Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:31:22.977Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.665,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:31:22.979Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:31:23.007Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.5445,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:31:23.009Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:31:23.287Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:31:23.295Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:31:23.306Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:31:23.328Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.1035,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:31:23.330Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:31:23.332Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.1279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:31:23.335Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:31:23.339Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.8023,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:31:23.341Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:31:23.359Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.1148,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:31:23.361Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:31:23.379Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.9914,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:31:23.382Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:31:23.394Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.6104,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:31:23.396Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:31:23.842Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:31:23.898Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.7982,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:31:23.903Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:31:23.948Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.8246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:31:23.951Z","event":"tenancy.ok","rid":null,"ms":109,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:31:24.099Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:31:24.148Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.1431,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:31:24.150Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:31:24.186Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:31:24.189Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:32:19.595Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:32:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.421,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:32:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:32:19.663Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:32:19.670Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.6885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:32:19.672Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:32:19.707Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.4417,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:32:19.709Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:32:19.738Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.6471,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:32:19.739Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:32:19.822Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:32:19.830Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:32:19.869Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.5177,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:32:19.871Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:32:19.875Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.073,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:32:19.877Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:32:19.905Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4288,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:32:19.909Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:32:19.922Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.4896,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:32:19.932Z","event":"tenancy.ok","rid":null,"ms":102,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:32:20.114Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:32:20.141Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.5736,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:32:20.143Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:32:20.150Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:32:20.156Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.0283,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:32:20.161Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:32:20.182Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.6319,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:32:20.184Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:32:20.227Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.6284,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:32:20.229Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:32:20.299Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:32:20.320Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.7485,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:32:20.322Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:32:20.362Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.7419,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:32:20.364Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:32:20.712Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:32:20.737Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.3287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:32:20.739Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:32:20.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2208,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:32:20.786Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:32:20.808Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:32:20.844Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.7152,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:32:20.846Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:32:20.878Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.9995,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:32:20.880Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:32:21.075Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:32:21.108Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.1331,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:32:21.110Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:32:21.143Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:32:21.146Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:33:19.597Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:33:19.831Z","event":"tenants.lookup.exact.ok","rid":null,"ms":230.6195,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:33:19.834Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:33:19.889Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.321,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:33:19.892Z","event":"tenancy.ok","rid":null,"ms":295,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:33:19.926Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:33:19.944Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:33:19.977Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.6086,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:33:19.979Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:33:19.999Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.6821,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:33:20.002Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:33:20.033Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:33:20.134Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:33:20.239Z","event":"tenants.lookup.default.ok","rid":null,"ms":259.512,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:33:20.243Z","event":"tenancy.ok","rid":null,"ms":317,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:33:20.256Z","event":"tenants.lookup.exact.ok","rid":null,"ms":219.5047,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:33:20.257Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:33:20.260Z","event":"tenants.lookup.default.ok","rid":null,"ms":255.8272,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:33:20.261Z","event":"tenancy.ok","rid":null,"ms":317,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:33:20.276Z","event":"tenants.lookup.exact.ok","rid":null,"ms":140.1174,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:33:20.284Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:33:20.289Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.5349,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:33:20.292Z","event":"tenancy.ok","rid":null,"ms":259,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:33:20.320Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.8312,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:33:20.323Z","event":"tenancy.ok","rid":null,"ms":189,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:33:21.219Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:33:21.245Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.8477,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:33:21.247Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:33:21.277Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.3253,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:33:21.280Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:33:21.562Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:33:21.639Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:33:21.746Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:33:21.788Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:33:21.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":63.6354,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:33:21.816Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:33:21.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":177.2669,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:33:21.822Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:33:21.824Z","event":"tenants.lookup.exact.ok","rid":null,"ms":259.068,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:33:21.834Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:33:21.839Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.2756,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:33:21.841Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:33:21.847Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0183,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:33:21.851Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:33:21.867Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.1423,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:33:21.869Z","event":"tenancy.ok","rid":null,"ms":230,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:33:21.880Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.0636,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:33:21.892Z","event":"tenancy.ok","rid":null,"ms":330,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:33:21.918Z","event":"tenants.lookup.default.ok","rid":null,"ms":76.4141,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:33:21.926Z","event":"tenancy.ok","rid":null,"ms":138,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:34:19.599Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:34:19.625Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1378,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:34:19.627Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:34:19.655Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:34:19.661Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2444,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:34:19.663Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:34:19.686Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.773,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:34:19.688Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:34:19.709Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.0027,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:34:19.712Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:34:19.802Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:34:19.843Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.2426,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:34:19.844Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:34:19.891Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.0653,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:34:19.893Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:34:19.976Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:34:20.004Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.615,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:34:20.009Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:34:20.051Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.8229,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:34:20.054Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:34:20.072Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:34:20.100Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:34:20.106Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.0655,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:34:20.107Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:34:20.129Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:34:20.141Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.4924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:34:20.144Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:34:20.155Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.0393,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:34:20.157Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:34:20.160Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.6773,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:34:20.163Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:34:20.188Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.6925,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:34:20.190Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:34:20.198Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.849,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:34:20.199Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:34:20.608Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:34:20.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.1925,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:34:20.651Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:34:20.679Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.9005,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:34:20.683Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:34:20.812Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:34:20.850Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.4327,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:34:20.852Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:34:20.878Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.4747,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:34:20.882Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:34:21.055Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:34:21.078Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.9823,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:34:21.081Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:34:21.117Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.815,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:34:21.121Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T20:35:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:35:19.631Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.324,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:35:19.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:35:19.653Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:35:19.672Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0849,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:35:19.674Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:35:19.690Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.2847,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:35:19.691Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:35:19.719Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.642,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:35:19.721Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:35:19.805Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:35:19.837Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.4454,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:35:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:35:19.906Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:35:19.912Z","event":"tenants.lookup.default.ok","rid":null,"ms":71.6071,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:35:19.920Z","event":"tenancy.ok","rid":null,"ms":115,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:35:19.942Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.2878,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:35:19.947Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:35:19.986Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.8896,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:35:19.988Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:35:20.080Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:35:20.103Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:35:20.108Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.3552,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:35:20.112Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:35:20.140Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1213,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:35:20.142Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:35:20.153Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.3914,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:35:20.155Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:35:20.189Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.1432,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:35:20.191Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:35:20.504Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:35:20.542Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.1428,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:35:20.547Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:35:20.588Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.8501,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:35:20.590Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:35:20.827Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:35:20.841Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:35:20.847Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.7542,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:35:20.850Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:35:20.884Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7728,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:35:20.887Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:35:20.896Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.7704,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:35:20.906Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:35:20.944Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0593,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:35:20.948Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:35:21.122Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:35:21.167Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.524,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:35:21.170Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:35:21.210Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.0088,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:35:21.213Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:36:19.607Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:36:19.646Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.4793,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:36:19.648Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:36:19.771Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:36:19.891Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:36:19.949Z","event":"tenants.lookup.exact.ok","rid":null,"ms":176.1972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:36:19.951Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:36:19.954Z","event":"tenants.lookup.default.ok","rid":null,"ms":305.2946,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:36:19.956Z","event":"tenancy.ok","rid":null,"ms":349,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:36:19.970Z","event":"tenants.lookup.exact.ok","rid":null,"ms":74.5751,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:36:19.972Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:36:19.992Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.2429,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:36:20.003Z","event":"tenancy.ok","rid":null,"ms":232,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:36:20.016Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.3447,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:36:20.018Z","event":"tenancy.ok","rid":null,"ms":127,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:36:20.039Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:36:20.097Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.8187,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:36:20.099Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:36:20.159Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:36:20.337Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:36:20.416Z","event":"tenants.lookup.exact.ok","rid":null,"ms":248.685,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:36:20.418Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:36:20.423Z","event":"tenants.lookup.default.ok","rid":null,"ms":322.3302,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:36:20.427Z","event":"tenancy.ok","rid":null,"ms":389,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:36:20.436Z","event":"tenants.lookup.exact.ok","rid":null,"ms":96.0765,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:36:20.439Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:36:20.449Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:36:20.472Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.281,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:36:20.474Z","event":"tenancy.ok","rid":null,"ms":137,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:36:20.489Z","event":"tenants.lookup.default.ok","rid":null,"ms":66.7767,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:36:20.492Z","event":"tenancy.ok","rid":null,"ms":332,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:36:20.518Z","event":"tenants.lookup.exact.ok","rid":null,"ms":62.062,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:36:20.520Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:36:20.558Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5122,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:36:20.564Z","event":"tenancy.ok","rid":null,"ms":115,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:36:20.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:36:20.960Z","event":"tenants.lookup.exact.ok","rid":null,"ms":173.1803,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:36:20.962Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:36:20.989Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.9006,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:36:20.992Z","event":"tenancy.ok","rid":null,"ms":207,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:36:21.214Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:36:21.240Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:36:21.428Z","event":"tenants.lookup.exact.ok","rid":null,"ms":211.9335,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:36:21.431Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:36:21.436Z","event":"tenants.lookup.exact.ok","rid":null,"ms":193.1953,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:36:21.438Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:36:21.488Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.5611,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:36:21.491Z","event":"tenancy.ok","rid":null,"ms":277,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:36:21.503Z","event":"tenants.lookup.default.ok","rid":null,"ms":63.7812,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:36:21.505Z","event":"tenancy.ok","rid":null,"ms":265,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:37:19.594Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:37:19.647Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:37:19.712Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:37:19.764Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:37:19.854Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:37:19.858Z","event":"tenants.lookup.exact.ok","rid":null,"ms":208.6885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:37:19.867Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:37:19.869Z","event":"tenants.lookup.exact.ok","rid":null,"ms":269.7906,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:37:19.871Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:37:19.873Z","event":"tenants.lookup.exact.ok","rid":null,"ms":107.3562,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:37:19.879Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:37:19.886Z","event":"tenants.lookup.exact.ok","rid":null,"ms":171.3779,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:37:19.888Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:37:19.896Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.4705,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:37:19.898Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:37:19.900Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.6377,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:37:19.902Z","event":"tenancy.ok","rid":null,"ms":308,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:37:19.913Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.0836,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:37:19.915Z","event":"tenancy.ok","rid":null,"ms":268,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:37:19.931Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.5632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:37:19.932Z","event":"tenancy.ok","rid":null,"ms":168,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:37:19.941Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.8227,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:37:19.944Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:37:19.956Z","event":"tenants.lookup.default.ok","rid":null,"ms":64.2124,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:37:19.962Z","event":"tenancy.ok","rid":null,"ms":250,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:37:20.308Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:37:20.334Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:37:20.346Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5927,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:37:20.347Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:37:20.356Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:37:20.363Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.7489,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:37:20.364Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:37:20.370Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0121,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:37:20.372Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:37:20.399Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:37:20.403Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.2346,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:37:20.404Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:37:20.406Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.3679,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:37:20.408Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:37:20.426Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.0204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:37:20.429Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:37:20.432Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.8366,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:37:20.433Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:37:20.464Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0245,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:37:20.467Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:37:20.599Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:37:20.631Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1002,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:37:20.632Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:37:20.663Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.9963,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:37:20.665Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:38:19.700Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:38:19.729Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.2397,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:38:19.731Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:38:19.768Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.888,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:38:19.770Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:38:19.803Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:38:19.850Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.5251,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:38:19.852Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:38:19.869Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:38:19.892Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.9868,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:38:19.895Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:38:19.928Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.4142,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:38:19.934Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:38:19.970Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6857,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:38:19.975Z","event":"tenancy.ok","rid":null,"ms":106,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:38:20.183Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:38:20.199Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:38:20.235Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.4548,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:38:20.240Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:38:20.244Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.8261,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:38:20.249Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:38:20.280Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.1664,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:38:20.283Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:38:20.295Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.8269,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:38:20.297Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:38:20.688Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:38:20.735Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.2252,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:38:20.739Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:38:20.774Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9005,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:38:20.778Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:38:20.873Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:38:20.915Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.3609,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:38:20.917Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:38:20.946Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.1362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:38:20.948Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:38:21.056Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:38:21.101Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.3699,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:38:21.104Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:38:21.163Z","event":"tenants.lookup.default.ok","rid":null,"ms":57.5814,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:38:21.168Z","event":"tenancy.ok","rid":null,"ms":112,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:38:21.276Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:38:21.309Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.3976,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:38:21.311Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:38:21.351Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.4435,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:38:21.353Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:38:21.448Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:38:21.487Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.3263,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:38:21.490Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:38:21.521Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.2286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:38:21.523Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:39:19.599Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:39:19.628Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.4883,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:39:19.630Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:39:19.664Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5689,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:39:19.667Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:39:19.692Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:39:19.724Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.7139,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:39:19.726Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:39:19.763Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6364,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:39:19.765Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:39:19.888Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:39:19.921Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.8501,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:39:19.923Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:39:19.964Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.5442,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:39:19.967Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:39:20.000Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:39:20.041Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.5821,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:39:20.043Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:39:20.080Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.9249,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:39:20.082Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:39:20.161Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:39:20.209Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.4841,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:39:20.211Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:39:20.243Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:39:20.246Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7578,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:39:20.248Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:39:20.261Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:39:20.279Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.7039,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:39:20.281Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:39:20.292Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.5802,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:39:20.294Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:39:20.300Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.8356,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:39:20.306Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:39:20.326Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3202,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:39:20.329Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:39:20.580Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:39:20.612Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.8892,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:39:20.613Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:39:20.644Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.0898,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:39:20.647Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:39:20.852Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:39:20.887Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:39:20.892Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.5056,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:39:20.894Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:39:20.926Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4726,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:39:20.928Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:39:20.942Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.0181,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:39:20.943Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:39:20.972Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.5845,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:39:20.975Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T20:40:19.597Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:40:19.626Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.757,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:40:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:40:19.685Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:40:19.693Z","event":"tenants.lookup.default.ok","rid":null,"ms":63.9774,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:40:19.695Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:40:19.716Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.2308,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:40:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:40:19.763Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.6396,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:40:19.765Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:40:19.966Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:40:20.010Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.0529,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:40:20.012Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:40:20.027Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:40:20.042Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8276,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:40:20.044Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:40:20.076Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.593,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:40:20.079Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:40:20.112Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1752,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:40:20.114Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:40:20.161Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:40:20.181Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.8565,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:40:20.184Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:40:20.207Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.2856,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:40:20.209Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:40:20.397Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:40:20.424Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9359,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:40:20.427Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:40:20.442Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.9993,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:40:20.444Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:40:20.676Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:40:20.715Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.5736,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:40:20.718Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:40:20.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.0788,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:40:20.764Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:40:20.946Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:40:20.987Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.811,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:40:20.990Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:40:21.046Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.5665,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:40:21.048Z","event":"tenancy.ok","rid":null,"ms":102,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:40:21.126Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:40:21.163Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:40:21.168Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.7466,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:40:21.179Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:40:21.209Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.9312,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:40:21.211Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:40:21.213Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.3844,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:40:21.214Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:40:21.244Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.357,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:40:21.246Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:41:19.607Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:41:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:41:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:41:19.845Z","event":"tenants.lookup.exact.ok","rid":null,"ms":59.8698,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:41:19.846Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:41:19.851Z","event":"tenants.lookup.exact.ok","rid":null,"ms":240.5808,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:41:19.854Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:41:19.857Z","event":"tenants.lookup.exact.ok","rid":null,"ms":60.2838,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:41:19.858Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:41:19.893Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3366,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:41:19.895Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:41:19.908Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.3537,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:41:19.920Z","event":"tenancy.ok","rid":null,"ms":313,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:41:19.940Z","event":"tenants.lookup.default.ok","rid":null,"ms":90.978,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:41:19.945Z","event":"tenancy.ok","rid":null,"ms":165,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:41:20.105Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:41:20.207Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:41:20.416Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:41:20.506Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:41:20.613Z","event":"tenants.lookup.exact.ok","rid":null,"ms":403.776,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:41:20.618Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:41:20.621Z","event":"tenants.lookup.exact.ok","rid":null,"ms":513.1766,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:41:20.622Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:41:20.638Z","event":"tenants.lookup.exact.ok","rid":null,"ms":212.8402,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:41:20.640Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:41:20.642Z","event":"tenants.lookup.exact.ok","rid":null,"ms":134.8982,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:41:20.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:41:20.655Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5852,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:41:20.657Z","event":"tenancy.ok","rid":null,"ms":552,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:41:20.670Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.3064,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:41:20.674Z","event":"tenancy.ok","rid":null,"ms":467,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:41:20.695Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.7391,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:41:20.698Z","event":"tenancy.ok","rid":null,"ms":282,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:41:20.712Z","event":"tenants.lookup.default.ok","rid":null,"ms":64.7974,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:41:20.718Z","event":"tenancy.ok","rid":null,"ms":212,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:41:20.867Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:41:21.166Z","event":"tenants.lookup.exact.ok","rid":null,"ms":296.8031,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:41:21.170Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:41:21.178Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:41:21.210Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.4393,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:41:21.213Z","event":"tenancy.ok","rid":null,"ms":346,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:41:21.225Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.1968,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:41:21.227Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:41:21.249Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.3855,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:41:21.254Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:41:21.438Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:41:21.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":276.199,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:41:21.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:41:21.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7579,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:41:21.751Z","event":"tenancy.ok","rid":null,"ms":313,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:42:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:42:19.615Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.571,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:42:19.618Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:42:19.647Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:42:19.650Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.0974,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:42:19.652Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:42:19.688Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.9477,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:42:19.689Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:42:19.707Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.9232,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:42:19.709Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:42:19.790Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:42:19.826Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:42:19.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.7456,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:42:19.838Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:42:19.868Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.7961,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:42:19.872Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:42:19.875Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8076,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:42:19.879Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:42:19.893Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.7257,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:42:19.896Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:42:20.182Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:42:20.206Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.0308,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:42:20.208Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:42:20.247Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.1271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:42:20.252Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:42:20.292Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:42:20.328Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.081,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:42:20.331Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:42:20.367Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7929,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:42:20.370Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:42:20.488Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:42:20.529Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.0446,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:42:20.531Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:42:20.566Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2183,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:42:20.568Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:42:20.762Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:42:20.788Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:42:20.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.687,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:42:20.816Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:42:20.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.9067,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:42:20.821Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:42:20.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.3723,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:42:20.869Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:42:20.902Z","event":"tenants.lookup.default.ok","rid":null,"ms":80.3952,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:42:20.911Z","event":"tenancy.ok","rid":null,"ms":123,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:42:21.082Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:42:21.106Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.4305,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:42:21.109Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:42:21.146Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5316,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:42:21.148Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:43:19.607Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:43:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.8066,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:43:19.637Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:43:19.663Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:43:19.688Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.4797,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:43:19.690Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:43:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.0017,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:43:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:43:19.765Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.9646,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:43:19.768Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:43:20.310Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:43:20.357Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.8705,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:43:20.359Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:43:20.419Z","event":"tenants.lookup.default.ok","rid":null,"ms":57.6367,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:43:20.421Z","event":"tenancy.ok","rid":null,"ms":111,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:43:20.696Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:43:20.733Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.1696,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:43:20.735Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:43:20.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.8961,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:43:20.796Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:43:21.095Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:43:21.128Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4368,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:43:21.131Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:43:21.161Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.4444,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:43:21.165Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:43:21.643Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:43:21.656Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:43:21.667Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.1329,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:43:21.669Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:43:21.686Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.9803,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:43:21.688Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:43:21.697Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.0936,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:43:21.701Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:43:21.733Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.3023,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:43:21.737Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:43:22.029Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:43:22.066Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3517,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:43:22.068Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:43:22.085Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.6774,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:43:22.087Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:43:22.118Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:43:22.136Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.5495,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:43:22.138Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:43:22.164Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:43:22.168Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0187,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:43:22.170Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:43:22.191Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.0076,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:43:22.194Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:43:22.229Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:43:22.233Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:44:19.605Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:44:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.355,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:44:19.637Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:44:19.678Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.1427,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:44:19.679Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:44:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:44:19.828Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.8173,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:44:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:44:19.875Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.6263,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:44:19.878Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:44:20.104Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:44:20.124Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.6838,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:44:20.128Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:44:20.184Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.8736,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:44:20.187Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:44:20.256Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:44:20.291Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1209,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:44:20.294Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:44:20.337Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.2647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:44:20.339Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:44:20.473Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:44:20.512Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8608,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:44:20.513Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:44:20.555Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:44:20.557Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:44:21.117Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:44:21.151Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.2931,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:44:21.153Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:44:21.189Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.9678,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:44:21.192Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:44:21.231Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:44:21.250Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:44:21.278Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.4727,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:44:21.280Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:44:21.282Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.0282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:44:21.283Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:44:21.305Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.1189,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:44:21.308Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:44:21.322Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.7645,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:44:21.331Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:44:21.670Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:44:21.692Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.9922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:44:21.696Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:44:21.732Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0868,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:44:21.734Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:44:21.803Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:44:21.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.477,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:44:21.836Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:44:21.865Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:44:21.867Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T20:45:19.582Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:45:19.633Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.8772,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:45:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:45:19.683Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:45:19.687Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.6722,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:45:19.689Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:45:19.802Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:45:19.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":150.074,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:45:19.840Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:45:19.859Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:45:19.944Z","event":"tenants.lookup.exact.ok","rid":null,"ms":139.1411,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:45:19.947Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:45:19.974Z","event":"tenants.lookup.default.ok","rid":null,"ms":132.1417,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:45:19.976Z","event":"tenancy.ok","rid":null,"ms":293,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:45:19.992Z","event":"tenants.lookup.exact.ok","rid":null,"ms":127.3653,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:45:19.994Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:45:20.000Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.3185,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:45:20.003Z","event":"tenancy.ok","rid":null,"ms":201,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:45:20.033Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.9588,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:45:20.036Z","event":"tenancy.ok","rid":null,"ms":177,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:45:20.084Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:45:20.132Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.4326,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:45:20.134Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:45:20.168Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.4854,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:45:20.173Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:45:20.226Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:45:20.337Z","event":"tenants.lookup.exact.ok","rid":null,"ms":108.3339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:45:20.340Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:45:20.413Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:45:20.417Z","event":"tenants.lookup.default.ok","rid":null,"ms":74.6715,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:45:20.423Z","event":"tenancy.ok","rid":null,"ms":197,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:45:20.452Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:45:20.461Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.528,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:45:20.463Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:45:20.492Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.136,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:45:20.494Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:45:20.497Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:45:20.499Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:45:20.538Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.2659,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:45:20.544Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:45:20.663Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:45:20.742Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:45:20.870Z","event":"tenants.lookup.exact.ok","rid":null,"ms":204.7875,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:45:20.873Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:45:20.944Z","event":"tenants.lookup.exact.ok","rid":null,"ms":200.1585,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:45:20.946Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:45:21.063Z","event":"tenants.lookup.default.ok","rid":null,"ms":188.7999,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:45:21.066Z","event":"tenancy.ok","rid":null,"ms":403,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:45:21.078Z","event":"tenants.lookup.default.ok","rid":null,"ms":131.0187,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:45:21.083Z","event":"tenancy.ok","rid":null,"ms":341,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:46:19.598Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:46:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.5349,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:46:19.643Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:46:19.650Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:46:19.675Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.0342,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:46:19.677Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:46:19.684Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.0082,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:46:19.688Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:46:19.719Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.3888,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:46:19.722Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:46:19.756Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:46:19.785Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.4013,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:46:19.787Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:46:19.806Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.0568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:46:19.809Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:46:19.893Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:46:19.930Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.6241,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:46:19.932Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:46:19.968Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8848,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:46:19.972Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:46:20.116Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:46:20.149Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.6033,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:46:20.151Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:46:20.186Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.8803,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:46:20.188Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:46:20.313Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:46:20.351Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.543,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:46:20.353Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:46:20.384Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6115,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:46:20.386Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:46:20.601Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:46:20.633Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.9113,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:46:20.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:46:20.641Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:46:20.679Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.3558,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:46:20.680Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:46:20.691Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.483,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:46:20.695Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:46:20.730Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:46:20.731Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:46:20.783Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:46:20.816Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.194,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:46:20.819Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:46:20.864Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.088,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:46:20.867Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:46:21.078Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:46:21.111Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9603,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:46:21.113Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:46:21.149Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1508,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:46:21.151Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:47:19.628Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:47:19.654Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1867,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:47:19.655Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:47:19.693Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.6274,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:47:19.695Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:47:19.717Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:47:19.760Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.478,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:47:19.762Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:47:19.787Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.8325,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:47:19.790Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:47:19.861Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:47:19.886Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.8282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:47:19.891Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:47:19.938Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.3848,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:47:19.940Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:47:20.035Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:47:20.077Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:47:20.081Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.787,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:47:20.083Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:47:20.108Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.962,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:47:20.109Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:47:20.112Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.1712,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:47:20.115Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:47:20.145Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.2453,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:47:20.148Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:47:20.323Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:47:20.344Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:47:20.347Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.7622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:47:20.349Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:47:20.365Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.1352,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:47:20.369Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:47:20.373Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.2056,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:47:20.375Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:47:20.408Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.3622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:47:20.410Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:47:20.703Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:47:20.730Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.7359,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:47:20.731Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:47:20.746Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.1377,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:47:20.748Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:47:20.826Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:47:20.846Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.6446,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:47:20.848Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:47:20.885Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.7091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:47:20.889Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:47:20.915Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:47:20.945Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5978,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:47:20.948Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:47:20.992Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.1999,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:47:20.994Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:48:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:48:19.795Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:48:19.808Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:48:19.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.4458,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:48:19.814Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:48:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.2946,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:48:19.822Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:48:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.9385,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:48:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:48:19.842Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.2938,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:48:19.843Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:48:19.858Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4611,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:48:19.860Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:48:19.880Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.5789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:48:19.891Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:48:19.946Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:48:20.063Z","event":"tenants.lookup.exact.ok","rid":null,"ms":113.1349,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:48:20.066Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:48:20.106Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.2393,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:48:20.109Z","event":"tenancy.ok","rid":null,"ms":163,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:48:20.216Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:48:20.392Z","event":"tenants.lookup.exact.ok","rid":null,"ms":169.234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:48:20.394Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:48:20.412Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:48:20.421Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.7175,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:48:20.424Z","event":"tenancy.ok","rid":null,"ms":208,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:48:20.444Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:48:20.454Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.9773,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:48:20.456Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:48:20.480Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7025,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:48:20.489Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:48:20.493Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.7931,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:48:20.498Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:48:20.534Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.6105,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:48:20.538Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:48:20.729Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:48:20.838Z","event":"tenants.lookup.exact.ok","rid":null,"ms":105.9555,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:48:20.840Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:48:20.844Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:48:20.874Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7218,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:48:20.877Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:48:20.880Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.9838,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:48:20.892Z","event":"tenancy.ok","rid":null,"ms":163,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:48:20.944Z","event":"tenants.lookup.default.ok","rid":null,"ms":65.4315,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:48:20.948Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:48:21.638Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:48:21.673Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.5047,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:48:21.675Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:48:21.849Z","event":"tenants.lookup.default.ok","rid":null,"ms":172.0903,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:48:21.853Z","event":"tenancy.ok","rid":null,"ms":215,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:49:19.597Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:49:19.628Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2898,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:49:19.631Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:49:19.670Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:49:19.676Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.8179,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:49:19.677Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:49:19.702Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.1672,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:49:19.703Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:49:19.724Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.7057,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:49:19.728Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:49:19.832Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:49:19.871Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.8058,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:49:19.873Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:49:19.889Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.5793,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:49:19.891Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:49:19.950Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:49:20.037Z","event":"tenants.lookup.exact.ok","rid":null,"ms":77.8277,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:49:20.039Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:49:20.127Z","event":"tenants.lookup.default.ok","rid":null,"ms":86.7306,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:49:20.131Z","event":"tenancy.ok","rid":null,"ms":181,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:49:20.256Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:49:20.271Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:49:20.292Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.1599,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:49:20.298Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:49:20.301Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.9717,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:49:20.305Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:49:20.339Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.2306,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:49:20.341Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:49:20.352Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.115,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:49:20.358Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:49:21.098Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:49:21.134Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.9624,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:49:21.136Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:49:21.172Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.5049,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:49:21.174Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:49:21.369Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:49:21.403Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.9143,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:49:21.407Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:49:21.459Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.4892,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:49:21.462Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:49:21.607Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:49:21.653Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.0158,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:49:21.655Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:49:21.687Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.8759,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:49:21.689Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:49:22.029Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:49:22.081Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.3633,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:49:22.083Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:49:22.114Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.0675,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:49:22.116Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T20:50:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:50:19.634Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.287,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:50:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:50:19.672Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.808,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:50:19.674Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:50:19.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:50:19.780Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.0828,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:50:19.784Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:50:19.807Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.2453,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:50:19.808Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:50:19.907Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:50:19.930Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.9302,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:50:19.933Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:50:19.968Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:50:19.970Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:50:20.051Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:50:20.098Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.9286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:50:20.101Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:50:20.128Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.8222,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:50:20.131Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:50:20.181Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:50:20.207Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1502,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:50:20.208Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:50:20.228Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.8394,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:50:20.231Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:50:20.340Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:50:20.371Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.6618,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:50:20.373Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:50:20.407Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2229,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:50:20.409Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:50:20.752Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:50:20.787Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:50:20.793Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.1014,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:50:20.796Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:50:20.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:50:20.821Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:50:20.835Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9666,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:50:20.837Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:50:20.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.9785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:50:20.853Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:50:21.176Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:50:21.219Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.2324,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:50:21.221Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:50:21.250Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.1906,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:50:21.252Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:50:21.316Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:50:21.347Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3352,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:50:21.349Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:50:21.369Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.0302,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:50:21.371Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:51:19.603Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:51:19.638Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.6658,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:51:19.640Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:51:19.664Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:51:19.673Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9902,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:51:19.675Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:51:19.703Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.4716,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:51:19.705Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:51:19.735Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7707,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:51:19.736Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:51:19.795Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:51:19.832Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.4251,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:51:19.834Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:51:19.838Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:51:19.875Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.3911,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:51:19.877Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:51:19.879Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.3016,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:51:19.881Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:51:19.914Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.6391,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:51:19.916Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:51:20.092Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:51:20.135Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.7947,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:51:20.137Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:51:20.166Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:51:20.172Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.1569,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:51:20.174Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:51:20.198Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9573,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:51:20.200Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:51:20.217Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.7171,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:51:20.219Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:51:20.601Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:51:20.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.2833,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:51:20.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:51:20.672Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:51:20.675Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:51:20.765Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:51:20.793Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.0609,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:51:20.796Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:51:20.838Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.2552,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:51:20.839Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:51:21.023Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:51:21.055Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.0016,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:51:21.059Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:51:21.098Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:51:21.101Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.0515,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:51:21.103Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:51:21.134Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.7605,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:51:21.139Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:51:21.172Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.0165,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:51:21.175Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:52:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:52:19.699Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:52:19.703Z","event":"tenants.lookup.exact.ok","rid":null,"ms":106.112,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:52:19.704Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:52:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.7045,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:52:19.738Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:52:19.741Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.389,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:52:19.743Z","event":"tenancy.ok","rid":null,"ms":150,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:52:19.781Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.9594,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:52:19.783Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:52:19.802Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:52:19.837Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.3801,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:52:19.841Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:52:19.877Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:52:19.879Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:52:19.978Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:52:20.107Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:52:20.213Z","event":"tenants.lookup.exact.ok","rid":null,"ms":232.3745,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:52:20.215Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:52:20.217Z","event":"tenants.lookup.exact.ok","rid":null,"ms":104.0757,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:52:20.218Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:52:20.235Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.4213,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:52:20.238Z","event":"tenancy.ok","rid":null,"ms":260,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:52:20.255Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9985,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:52:20.258Z","event":"tenancy.ok","rid":null,"ms":151,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:52:20.376Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:52:20.456Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:52:20.574Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:52:20.647Z","event":"tenants.lookup.exact.ok","rid":null,"ms":179.8587,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:52:20.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:52:20.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":272.8129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:52:20.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:52:20.655Z","event":"tenants.lookup.exact.ok","rid":null,"ms":74.7424,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:52:20.656Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:52:20.681Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.2661,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:52:20.683Z","event":"tenancy.ok","rid":null,"ms":227,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:52:20.696Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.2036,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:52:20.701Z","event":"tenancy.ok","rid":null,"ms":325,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:52:20.717Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.9239,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:52:20.719Z","event":"tenancy.ok","rid":null,"ms":145,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:52:21.102Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:52:21.146Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:52:21.150Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.7934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:52:21.151Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:52:21.177Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.401,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:52:21.179Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:52:21.181Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.3101,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:52:21.182Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:52:21.218Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.6786,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:52:21.220Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:53:19.615Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:53:19.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.1941,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:53:19.639Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:53:19.664Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:53:19.681Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.9204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:53:19.683Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:53:19.695Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.0977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:53:19.697Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:53:19.743Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.7942,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:53:19.745Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:53:19.829Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:53:19.863Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5039,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:53:19.865Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:53:19.896Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6872,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:53:19.897Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:53:19.997Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:53:20.036Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.5987,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:53:20.039Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:53:20.052Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:53:20.094Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.2196,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:53:20.096Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:53:20.112Z","event":"tenants.lookup.exact.ok","rid":null,"ms":59.0471,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:53:20.113Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:53:20.140Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:53:20.144Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:53:20.209Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:53:20.235Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.1758,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:53:20.237Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:53:20.281Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.8681,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:53:20.283Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:53:20.391Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:53:20.436Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.109,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:53:20.439Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:53:20.481Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.458,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:53:20.483Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:53:20.511Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:53:20.535Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.5684,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:53:20.540Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:53:20.577Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0607,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:53:20.579Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:53:20.751Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:53:20.805Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.533,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:53:20.811Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:53:20.839Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:53:20.849Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1029,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:53:20.850Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:53:20.881Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.5344,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:53:20.883Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:53:20.915Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.7339,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:53:20.917Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:54:19.595Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:54:19.623Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:54:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:54:19.688Z","event":"tenants.lookup.exact.ok","rid":null,"ms":90.8192,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:54:19.691Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:54:19.694Z","event":"tenants.lookup.exact.ok","rid":null,"ms":68.9168,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:54:19.696Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:54:19.716Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.4677,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:54:19.718Z","event":"tenancy.ok","rid":null,"ms":123,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:54:19.728Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.0625,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:54:19.729Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:54:19.731Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.944,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:54:19.732Z","event":"tenancy.ok","rid":null,"ms":109,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:54:19.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.9995,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:54:19.761Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:54:19.806Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:54:19.830Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.4565,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:54:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:54:19.871Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.2769,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:54:19.873Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:54:19.968Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:54:19.996Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.6578,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:54:19.998Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:54:20.030Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3581,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:54:20.031Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:54:20.191Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:54:20.210Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.6914,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:54:20.212Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:54:20.230Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:54:20.233Z","event":"tenancy.ok","rid":null,"ms":42,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:54:20.259Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:54:20.276Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.6841,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:54:20.278Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:54:20.310Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.5855,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:54:20.314Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:54:20.330Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:54:20.359Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2196,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:54:20.361Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:54:20.394Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.8669,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:54:20.396Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:54:20.426Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:54:20.451Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.0527,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:54:20.455Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:54:20.492Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:54:20.494Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:54:20.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:54:20.711Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.881,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:54:20.715Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:54:20.730Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.5889,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:54:20.732Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T20:55:19.610Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:55:19.707Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:55:19.757Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:55:19.803Z","event":"tenants.lookup.exact.ok","rid":null,"ms":189.5904,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:55:19.806Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:55:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":103.4734,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:55:19.815Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:55:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":59.4458,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:55:19.822Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:55:19.842Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:55:19.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.7567,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:55:19.853Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:55:19.865Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.0062,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:55:19.867Z","event":"tenancy.ok","rid":null,"ms":160,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:55:19.880Z","event":"tenants.lookup.default.ok","rid":null,"ms":71.8116,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:55:19.883Z","event":"tenancy.ok","rid":null,"ms":273,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:55:19.912Z","event":"tenants.lookup.exact.ok","rid":null,"ms":66.7342,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:55:19.920Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:55:19.963Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.1968,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:55:19.965Z","event":"tenancy.ok","rid":null,"ms":123,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:55:20.087Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:55:20.331Z","event":"tenants.lookup.exact.ok","rid":null,"ms":237.0803,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:55:20.334Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:55:20.380Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.4341,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:55:20.382Z","event":"tenancy.ok","rid":null,"ms":295,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:55:20.862Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:55:20.880Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.3608,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:55:20.884Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:55:20.916Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.0271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:55:20.920Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:55:20.986Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:55:21.036Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.9568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:55:21.038Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:55:21.163Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:55:21.180Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:55:21.292Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:55:21.344Z","event":"tenants.lookup.exact.ok","rid":null,"ms":160.0562,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:55:21.346Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:55:21.349Z","event":"tenants.lookup.exact.ok","rid":null,"ms":183.6351,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:55:21.352Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:55:21.355Z","event":"tenants.lookup.default.ok","rid":null,"ms":315.3585,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:55:21.356Z","event":"tenancy.ok","rid":null,"ms":374,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:55:21.369Z","event":"tenants.lookup.exact.ok","rid":null,"ms":75.3386,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:55:21.371Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:55:21.377Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.5715,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:55:21.381Z","event":"tenancy.ok","rid":null,"ms":201,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:55:21.396Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.9886,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:55:21.399Z","event":"tenancy.ok","rid":null,"ms":237,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:55:21.418Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.5981,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:55:21.423Z","event":"tenancy.ok","rid":null,"ms":131,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:56:19.585Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:56:19.628Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.8726,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:56:19.631Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:56:19.661Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.82,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:56:19.663Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:56:19.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:56:19.782Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.9348,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:56:19.785Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:56:19.826Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.1882,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:56:19.828Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:56:19.883Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:56:19.912Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:56:19.926Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.8233,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:56:19.929Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:56:19.967Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.178,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:56:19.969Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:56:19.971Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.91,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:56:19.973Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:56:20.023Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.2371,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:56:20.025Z","event":"tenancy.ok","rid":null,"ms":113,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:56:20.131Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:56:20.179Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.0101,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:56:20.181Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:56:20.189Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:56:20.211Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.3431,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:56:20.214Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:56:20.225Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.4119,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:56:20.228Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:56:20.262Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.1713,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:56:20.264Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:56:20.613Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:56:20.675Z","event":"tenants.lookup.exact.ok","rid":null,"ms":59.8828,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:56:20.677Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:56:20.693Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:56:20.708Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.2184,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:56:20.710Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:56:20.756Z","event":"tenants.lookup.exact.ok","rid":null,"ms":58.7001,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:56:20.757Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:56:20.780Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.2198,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:56:20.782Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:56:21.112Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:56:21.185Z","event":"tenants.lookup.exact.ok","rid":null,"ms":69.2641,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:56:21.187Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:56:21.229Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.3047,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:56:21.231Z","event":"tenancy.ok","rid":null,"ms":119,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:56:21.311Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:56:21.352Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.4778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:56:21.355Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:56:21.376Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.9368,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:56:21.378Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:57:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:57:19.619Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.3179,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:57:19.621Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:57:19.658Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:57:19.666Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.0719,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:57:19.670Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:57:19.698Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.4944,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:57:19.700Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:57:19.737Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8944,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:57:19.739Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:57:19.748Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:57:19.781Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.7824,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:57:19.783Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:57:19.815Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:57:19.820Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.529,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:57:19.822Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:57:19.857Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.1116,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:57:19.860Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:57:19.900Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4773,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:57:19.903Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:57:20.020Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:57:20.044Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:57:20.069Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.2729,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:57:20.072Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:57:20.100Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.4973,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:57:20.102Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:57:20.104Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3363,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:57:20.105Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:57:20.140Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.1137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:57:20.142Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:57:20.266Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:57:20.299Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0341,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:57:20.302Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:57:20.339Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.039,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:57:20.340Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:57:20.421Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:57:20.457Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.678,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:57:20.460Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:57:20.502Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.1989,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:57:20.504Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:57:20.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:57:20.657Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.7362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:57:20.661Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:57:20.698Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.4265,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:57:20.700Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:57:20.781Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:57:20.818Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.5356,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:57:20.821Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:57:20.884Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.8771,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:57:20.887Z","event":"tenancy.ok","rid":null,"ms":106,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:58:19.601Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:58:19.659Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.0733,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:58:19.662Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:58:19.701Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.5395,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:58:19.703Z","event":"tenancy.ok","rid":null,"ms":102,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:58:19.820Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:58:19.881Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:58:19.935Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:58:20.060Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:58:20.097Z","event":"tenants.lookup.exact.ok","rid":null,"ms":208.8647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:58:20.100Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:58:20.102Z","event":"tenants.lookup.exact.ok","rid":null,"ms":164.9086,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:58:20.104Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:58:20.106Z","event":"tenants.lookup.exact.ok","rid":null,"ms":280.5322,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:58:20.107Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:58:20.109Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.0213,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:58:20.111Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:58:20.134Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.8244,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:58:20.136Z","event":"tenancy.ok","rid":null,"ms":201,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:58:20.152Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.7299,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:58:20.155Z","event":"tenancy.ok","rid":null,"ms":274,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:58:20.171Z","event":"tenants.lookup.default.ok","rid":null,"ms":63.5748,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:58:20.173Z","event":"tenancy.ok","rid":null,"ms":353,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:58:20.184Z","event":"tenants.lookup.default.ok","rid":null,"ms":71.8532,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:58:20.186Z","event":"tenancy.ok","rid":null,"ms":126,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:58:20.527Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:58:20.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":118.5759,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:58:20.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:58:20.687Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.1772,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:58:20.689Z","event":"tenancy.ok","rid":null,"ms":163,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:58:20.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:58:20.812Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:58:20.972Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:58:21.007Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:58:21.152Z","event":"tenants.lookup.exact.ok","rid":null,"ms":336.8655,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:58:21.154Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:58:21.156Z","event":"tenants.lookup.exact.ok","rid":null,"ms":355.0511,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:58:21.158Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:58:21.167Z","event":"tenants.lookup.exact.ok","rid":null,"ms":179.949,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:58:21.170Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:58:21.172Z","event":"tenants.lookup.exact.ok","rid":null,"ms":159.5547,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:58:21.174Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:58:21.184Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0655,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:58:21.187Z","event":"tenancy.ok","rid":null,"ms":375,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:58:21.200Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6899,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:58:21.202Z","event":"tenancy.ok","rid":null,"ms":230,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:58:21.217Z","event":"tenants.lookup.default.ok","rid":null,"ms":57.2291,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:58:21.219Z","event":"tenancy.ok","rid":null,"ms":420,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:58:21.238Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.5643,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:58:21.245Z","event":"tenancy.ok","rid":null,"ms":238,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:59:19.599Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:59:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.8196,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:59:19.646Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:59:19.668Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:59:19.683Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:59:19.685Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:59:19.704Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.2649,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:59:19.709Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:59:19.744Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.1118,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:59:19.747Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:59:19.820Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:59:19.869Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:59:19.873Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.9049,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:59:19.883Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:59:19.904Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.2674,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:59:19.910Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:59:19.915Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3194,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:59:19.917Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:59:19.945Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.3805,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:59:19.947Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:59:20.175Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:59:20.220Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.0102,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:59:20.221Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:59:20.238Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:59:20.269Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.6087,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:59:20.272Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:59:20.275Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.0747,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:59:20.280Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:59:20.300Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.7303,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:59:20.302Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:59:20.332Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:59:20.363Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.0265,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:59:20.366Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:59:20.398Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.9127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:59:20.401Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:59:20.565Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:59:20.604Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.8248,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:59:20.606Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:59:20.640Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0095,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:59:20.644Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:59:20.687Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:59:20.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.4483,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:59:20.729Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:59:20.778Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.9097,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:59:20.780Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T20:59:21.179Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T20:59:21.228Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.3076,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T20:59:21.229Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T20:59:21.259Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.5488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T20:59:21.261Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T21:00:19.606Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:00:19.639Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:00:19.642Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.6108,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:00:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:00:19.683Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9875,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:00:19.685Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:00:19.694Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.5284,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:00:19.696Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:00:19.702Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:00:19.728Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.3161,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:00:19.731Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:00:19.733Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.9782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:00:19.735Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:00:19.766Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.0192,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:00:19.769Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:00:19.828Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:00:19.859Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.742,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:00:19.861Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:00:19.900Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.3673,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:00:19.902Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:00:19.945Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:00:19.980Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.3369,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:00:19.982Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:00:20.006Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.8573,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:00:20.009Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:00:20.119Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:00:20.145Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1188,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:00:20.147Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:00:20.183Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.9452,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:00:20.185Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:00:20.211Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:00:20.246Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.1242,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:00:20.247Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:00:20.279Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.658,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:00:20.281Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:00:20.336Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:00:20.378Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.0572,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:00:20.380Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:00:20.400Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.7879,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:00:20.405Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:00:20.464Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:00:20.500Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.1006,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:00:20.503Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:00:20.539Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.4474,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:00:20.541Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:00:20.685Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:00:20.733Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.3791,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:00:20.735Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:00:20.783Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.8333,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:00:20.785Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:01:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:01:19.661Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.5159,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:01:19.663Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:01:19.699Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1542,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:01:19.701Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:01:19.828Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:01:20.034Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:01:20.045Z","event":"tenants.lookup.exact.ok","rid":null,"ms":215.2155,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:01:20.047Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:01:20.080Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.079,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:01:20.083Z","event":"tenancy.ok","rid":null,"ms":255,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:01:20.097Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.176,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:01:20.103Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:01:20.114Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:01:20.121Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.5762,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:01:20.124Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:01:20.153Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.0862,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:01:20.161Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:01:20.276Z","event":"tenants.lookup.default.ok","rid":null,"ms":113.7398,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:01:20.279Z","event":"tenancy.ok","rid":null,"ms":166,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:01:20.333Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:01:20.383Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.3377,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:01:20.387Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:01:20.462Z","event":"tenants.lookup.default.ok","rid":null,"ms":72.9921,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:01:20.464Z","event":"tenancy.ok","rid":null,"ms":131,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:01:20.673Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:01:20.782Z","event":"tenants.lookup.exact.ok","rid":null,"ms":105.6851,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:01:20.784Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:01:20.820Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.0064,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:01:20.823Z","event":"tenancy.ok","rid":null,"ms":150,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:01:20.837Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:01:20.861Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.2695,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:01:20.863Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:01:20.894Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.1995,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:01:20.896Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:01:21.195Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:01:21.225Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.0159,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:01:21.227Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:01:21.242Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:01:21.275Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.5397,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:01:21.277Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:01:21.295Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.1762,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:01:21.297Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:01:21.308Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:01:21.523Z","event":"tenants.lookup.default.ok","rid":null,"ms":224.7509,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:01:21.526Z","event":"tenancy.ok","rid":null,"ms":284,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:01:21.540Z","event":"tenants.lookup.exact.ok","rid":null,"ms":225.6507,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:01:21.543Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:01:21.625Z","event":"tenants.lookup.default.ok","rid":null,"ms":80.1535,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:01:21.627Z","event":"tenancy.ok","rid":null,"ms":319,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:02:20.946Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:02:20.961Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:02:20.976Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:02:20.989Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.4098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:02:20.992Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:02:20.994Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7133,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:02:21.000Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:02:21.029Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.2901,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:02:21.032Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:02:21.064Z","event":"tenants.lookup.default.ok","rid":null,"ms":70.8955,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:02:21.068Z","event":"tenancy.ok","rid":null,"ms":122,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:02:21.093Z","event":"tenants.lookup.exact.ok","rid":null,"ms":114.3141,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:02:21.118Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:02:21.146Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:02:21.171Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.6139,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:02:21.184Z","event":"tenancy.ok","rid":null,"ms":207,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:02:21.206Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.8598,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:02:21.208Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:02:21.247Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.2253,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:02:21.251Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:02:22.033Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:02:22.079Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.2739,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:02:22.084Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:02:22.124Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.0573,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:02:22.126Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:02:22.293Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:02:22.321Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:02:22.328Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:02:22.343Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.3415,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:02:22.345Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:02:22.373Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.0611,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:02:22.375Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:02:22.428Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:02:22.468Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8724,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:02:22.470Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:02:22.506Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8058,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:02:22.508Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:02:22.580Z","event":"tenants.lookup.exact.ok","rid":null,"ms":284.0798,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:02:22.585Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:02:22.628Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.9815,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:02:22.633Z","event":"tenancy.ok","rid":null,"ms":340,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:02:22.688Z","event":"tenants.lookup.exact.ok","rid":null,"ms":357.3346,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:02:22.689Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:02:22.720Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.8149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:02:22.722Z","event":"tenancy.ok","rid":null,"ms":394,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:02:22.866Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:02:22.903Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.062,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:02:22.904Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:02:22.945Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.4273,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:02:22.947Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:03:19.596Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:03:19.628Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.2091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:03:19.630Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:03:19.651Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:03:19.661Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7761,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:03:19.664Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:03:19.686Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.3504,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:03:19.689Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:03:19.723Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5105,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:03:19.725Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:03:19.824Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:03:19.858Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8912,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:03:19.859Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:03:19.904Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.6556,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:03:19.907Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:03:20.033Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:03:20.089Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.7488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:03:20.091Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:03:20.123Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1031,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:03:20.124Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:03:20.183Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:03:20.199Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:03:20.227Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.1897,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:03:20.229Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:03:20.231Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:03:20.232Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:03:20.263Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.249,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:03:20.266Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:03:20.285Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.9835,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:03:20.289Z","event":"tenancy.ok","rid":null,"ms":106,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:03:20.341Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:03:20.378Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.6062,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:03:20.379Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:03:20.425Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.1046,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:03:20.427Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:03:20.696Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:03:20.742Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.9903,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:03:20.746Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:03:20.783Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3975,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:03:20.786Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:03:20.850Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:03:20.882Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3181,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:03:20.888Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:03:20.919Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4113,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:03:20.922Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:03:21.080Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:03:21.121Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.9021,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:03:21.123Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:03:21.183Z","event":"tenants.lookup.default.ok","rid":null,"ms":59.6004,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:03:21.186Z","event":"tenancy.ok","rid":null,"ms":106,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:04:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:04:19.665Z","event":"tenants.lookup.exact.ok","rid":null,"ms":68.011,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:04:19.666Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:04:19.700Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.3599,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:04:19.702Z","event":"tenancy.ok","rid":null,"ms":110,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:04:19.958Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:04:19.990Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:04:20.035Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:04:20.218Z","event":"tenants.lookup.exact.ok","rid":null,"ms":254.8781,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:04:20.220Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:04:20.241Z","event":"tenants.lookup.exact.ok","rid":null,"ms":249.3866,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:04:20.243Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:04:20.245Z","event":"tenants.lookup.exact.ok","rid":null,"ms":208.38,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:04:20.247Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:04:20.249Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.2052,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:04:20.250Z","event":"tenancy.ok","rid":null,"ms":292,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:04:20.292Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.3147,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:04:20.296Z","event":"tenancy.ok","rid":null,"ms":306,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:04:20.306Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.2326,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:04:20.308Z","event":"tenancy.ok","rid":null,"ms":272,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:04:20.353Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:04:20.386Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6565,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:04:20.388Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:04:20.623Z","event":"tenants.lookup.default.ok","rid":null,"ms":233.4215,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:04:20.625Z","event":"tenancy.ok","rid":null,"ms":271,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:04:20.695Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:04:20.741Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.8634,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:04:20.743Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:04:20.789Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.5058,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:04:20.791Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:04:20.913Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:04:21.100Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:04:21.193Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:04:21.206Z","event":"tenants.lookup.exact.ok","rid":null,"ms":288.917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:04:21.208Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:04:21.210Z","event":"tenants.lookup.exact.ok","rid":null,"ms":107.0785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:04:21.211Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:04:21.241Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7656,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:04:21.244Z","event":"tenancy.ok","rid":null,"ms":331,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:04:21.255Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:04:21.257Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:04:21.259Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.8242,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:04:21.268Z","event":"tenancy.ok","rid":null,"ms":168,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:04:21.290Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:04:21.300Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.0952,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:04:21.303Z","event":"tenancy.ok","rid":null,"ms":110,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:04:21.332Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.6917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:04:21.334Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:04:21.368Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.8785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:04:21.370Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T21:05:19.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:05:19.647Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.195,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:05:19.651Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:05:19.672Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:05:19.681Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.2971,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:05:19.684Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:05:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.6168,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:05:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:05:19.747Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.9397,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:05:19.749Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:05:19.930Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:05:19.976Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.6999,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:05:19.979Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:05:20.007Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.5625,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:05:20.010Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:05:20.161Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:05:20.204Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.1259,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:05:20.206Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:05:20.249Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.5213,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:05:20.252Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:05:20.282Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:05:20.304Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.7491,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:05:20.306Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:05:20.346Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3522,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:05:20.348Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:05:20.872Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:05:20.918Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.9018,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:05:20.920Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:05:20.946Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.5015,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:05:20.948Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:05:21.332Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:05:21.364Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.8787,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:05:21.366Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:05:21.405Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.48,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:05:21.407Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:05:21.881Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:05:21.908Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:05:21.932Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:05:21.934Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:05:21.947Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5763,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:05:21.950Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:05:21.970Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3184,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:05:21.974Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:05:21.988Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.2702,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:05:21.997Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:05:22.357Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:05:22.404Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.2375,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:05:22.407Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:05:22.445Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0836,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:05:22.448Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:06:19.603Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:06:19.654Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.4892,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:06:19.656Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:06:19.690Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4315,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:06:19.693Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:06:19.716Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:06:19.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:06:19.753Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.6555,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:06:19.755Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:06:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.8686,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:06:19.798Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:06:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":72.9504,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:06:19.819Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:06:19.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.5923,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:06:19.853Z","event":"tenancy.ok","rid":null,"ms":114,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:06:20.084Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:06:20.114Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4383,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:06:20.116Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:06:20.156Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.8764,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:06:20.160Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:06:20.348Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:06:20.387Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.8378,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:06:20.389Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:06:20.400Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:06:20.430Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:06:20.443Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.2487,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:06:20.445Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:06:20.455Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.2408,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:06:20.457Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:06:20.473Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.9335,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:06:20.475Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:06:20.483Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.0387,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:06:20.485Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:06:20.515Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.6139,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:06:20.517Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:06:20.652Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:06:20.701Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.9049,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:06:20.704Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:06:20.726Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.8701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:06:20.730Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:06:20.891Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:06:20.934Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.425,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:06:20.936Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:06:20.979Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.1781,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:06:20.981Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:06:21.178Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:06:21.226Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.3512,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:06:21.230Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:06:21.268Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9007,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:06:21.271Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:07:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:07:19.650Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.9041,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:07:19.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:07:19.698Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.1506,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:07:19.700Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:07:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:07:19.836Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:07:19.947Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:07:19.981Z","event":"tenants.lookup.exact.ok","rid":null,"ms":257.4372,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:07:19.983Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:07:19.985Z","event":"tenants.lookup.exact.ok","rid":null,"ms":143.6119,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:07:19.986Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:07:20.002Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.7011,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:07:20.005Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:07:20.019Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7875,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:07:20.021Z","event":"tenancy.ok","rid":null,"ms":185,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:07:20.036Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.5042,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:07:20.048Z","event":"tenancy.ok","rid":null,"ms":328,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:07:20.063Z","event":"tenants.lookup.default.ok","rid":null,"ms":56.6207,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:07:20.066Z","event":"tenancy.ok","rid":null,"ms":119,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:07:20.214Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:07:20.453Z","event":"tenants.lookup.exact.ok","rid":null,"ms":234.228,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:07:20.455Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:07:20.469Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:07:20.496Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.1811,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:07:20.498Z","event":"tenancy.ok","rid":null,"ms":284,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:07:20.513Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.293,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:07:20.515Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:07:20.565Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.69,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:07:20.568Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:07:20.839Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:07:20.884Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:07:20.912Z","event":"tenants.lookup.exact.ok","rid":null,"ms":66.7268,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:07:20.914Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:07:20.916Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3658,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:07:20.917Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:07:20.949Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.4164,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:07:20.951Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:07:20.965Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.2834,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:07:20.967Z","event":"tenancy.ok","rid":null,"ms":128,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:07:21.159Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:07:21.385Z","event":"tenants.lookup.exact.ok","rid":null,"ms":221.5345,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:07:21.389Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:07:21.418Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.7569,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:07:21.420Z","event":"tenancy.ok","rid":null,"ms":261,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:07:22.168Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:07:22.237Z","event":"tenants.lookup.exact.ok","rid":null,"ms":60.7059,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:07:22.240Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:07:22.294Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.5798,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:07:22.296Z","event":"tenancy.ok","rid":null,"ms":128,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:08:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:08:19.663Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.3941,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:08:19.665Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:08:19.703Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.05,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:08:19.706Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:08:19.791Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:08:19.834Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:08:19.844Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.5379,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:08:19.845Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:08:19.868Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:08:19.879Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0212,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:08:19.881Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:08:19.904Z","event":"tenants.lookup.exact.ok","rid":null,"ms":60.8867,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:08:19.909Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:08:19.915Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.7698,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:08:19.918Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:08:19.962Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.9938,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:08:19.965Z","event":"tenancy.ok","rid":null,"ms":130,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:08:20.000Z","event":"tenants.lookup.default.ok","rid":null,"ms":77.7869,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:08:20.004Z","event":"tenancy.ok","rid":null,"ms":136,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:08:20.503Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:08:20.535Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4242,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:08:20.537Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:08:20.564Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.8116,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:08:20.567Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:08:21.049Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:08:21.094Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.6629,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:08:21.097Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:08:21.128Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.9449,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:08:21.130Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:08:21.271Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:08:21.312Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0562,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:08:21.314Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:08:21.343Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.509,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:08:21.345Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:08:21.503Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:08:21.564Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.979,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:08:21.566Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:08:21.603Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.5954,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:08:21.607Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:08:22.515Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:08:22.549Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.7513,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:08:22.554Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:08:22.593Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4324,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:08:22.595Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:08:22.847Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:08:22.952Z","event":"tenants.lookup.exact.ok","rid":null,"ms":101.4567,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:08:22.957Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:08:22.991Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:08:22.993Z","event":"tenancy.ok","rid":null,"ms":146,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:09:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:09:19.664Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.5568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:09:19.666Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:09:19.709Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.2189,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:09:19.711Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:09:19.760Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:09:19.788Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:09:19.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:09:19.803Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.5079,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:09:19.805Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:09:19.820Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.6612,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:09:19.823Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:09:19.825Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.3282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:09:19.827Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:09:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1026,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:09:19.836Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:09:19.859Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0486,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:09:19.861Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:09:19.880Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3009,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:09:19.890Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:09:20.277Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:09:20.292Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:09:20.309Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:09:20.311Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:09:20.323Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.4668,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:09:20.325Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:09:20.340Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.0342,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:09:20.342Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:09:20.357Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4453,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:09:20.359Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:09:20.424Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:09:20.461Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.9865,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:09:20.463Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:09:20.500Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3255,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:09:20.506Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:09:20.529Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:09:20.561Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.4561,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:09:20.564Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:09:20.615Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.7902,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:09:20.619Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:09:20.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:09:20.802Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.1775,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:09:20.805Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:09:20.826Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.454,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:09:20.828Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:09:21.120Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:09:21.145Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.8279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:09:21.147Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:09:21.188Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.5307,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:09:21.190Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T21:10:19.595Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:10:19.699Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:10:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:10:19.792Z","event":"tenants.lookup.exact.ok","rid":null,"ms":186.925,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:10:19.808Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:10:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":110.4277,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:10:19.821Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:10:19.847Z","event":"tenants.lookup.exact.ok","rid":null,"ms":57.0296,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:10:19.849Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:10:19.852Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.9654,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:10:19.853Z","event":"tenancy.ok","rid":null,"ms":154,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:10:19.870Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.6581,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:10:19.872Z","event":"tenancy.ok","rid":null,"ms":277,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:10:19.895Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.0828,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:10:19.904Z","event":"tenancy.ok","rid":null,"ms":123,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:10:20.032Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:10:20.078Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:10:20.120Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.9042,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:10:20.122Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:10:20.124Z","event":"tenants.lookup.exact.ok","rid":null,"ms":87.6806,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:10:20.125Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:10:20.141Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.0819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:10:20.144Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:10:20.156Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.9116,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:10:20.159Z","event":"tenancy.ok","rid":null,"ms":127,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:10:20.422Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:10:20.463Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.395,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:10:20.465Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:10:20.498Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:10:20.503Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9509,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:10:20.505Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:10:20.524Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.3568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:10:20.527Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:10:20.560Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9825,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:10:20.564Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:10:20.677Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:10:20.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:10:20.819Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:10:20.882Z","event":"tenants.lookup.exact.ok","rid":null,"ms":199.5605,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:10:20.885Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:10:20.889Z","event":"tenants.lookup.exact.ok","rid":null,"ms":67.2708,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:10:20.891Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:10:20.894Z","event":"tenants.lookup.exact.ok","rid":null,"ms":151.0228,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:10:20.898Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:10:20.901Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.4314,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:10:20.903Z","event":"tenancy.ok","rid":null,"ms":226,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:10:20.922Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.5322,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:10:20.928Z","event":"tenancy.ok","rid":null,"ms":109,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:10:20.943Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.3963,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:10:20.947Z","event":"tenancy.ok","rid":null,"ms":207,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:11:19.609Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:11:19.654Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.0916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:11:19.657Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:11:19.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:11:19.692Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:11:19.946Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:11:20.055Z","event":"tenants.lookup.exact.ok","rid":null,"ms":100.5308,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:11:20.061Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:11:20.160Z","event":"tenants.lookup.default.ok","rid":null,"ms":93.5875,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:11:20.166Z","event":"tenancy.ok","rid":null,"ms":220,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:11:20.449Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:11:20.487Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.4751,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:11:20.490Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:11:20.538Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.6893,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:11:20.541Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:11:20.764Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:11:20.815Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.452,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:11:20.818Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:11:20.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7096,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:11:20.855Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:11:21.216Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:11:21.250Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1921,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:11:21.252Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:11:21.295Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.6058,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:11:21.298Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:11:22.250Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:11:22.291Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.7942,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:11:22.293Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:11:22.327Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4552,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:11:22.331Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:11:23.422Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:11:23.470Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.2983,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:11:23.472Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:11:23.489Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:11:23.506Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7937,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:11:23.509Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:11:23.532Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.808,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:11:23.536Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:11:23.569Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.7862,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:11:23.572Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:11:23.804Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:11:23.914Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.5425,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:11:23.918Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:11:23.946Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.1994,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:11:23.952Z","event":"tenancy.ok","rid":null,"ms":148,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:11:24.280Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:11:24.321Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.1561,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:11:24.324Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:11:24.367Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.178,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:11:24.369Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:12:21.875Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:12:21.907Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1939,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:12:21.911Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:12:21.951Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.4993,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:12:21.953Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:12:22.119Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:12:22.171Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.7512,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:12:22.173Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:12:22.229Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.662,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:12:22.232Z","event":"tenancy.ok","rid":null,"ms":114,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:12:22.512Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:12:22.553Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.4099,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:12:22.555Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:12:22.590Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.657,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:12:22.592Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:12:22.819Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:12:22.851Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.8256,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:12:22.853Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:12:22.886Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.2726,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:12:22.889Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:12:22.969Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:12:23.004Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.0875,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:12:23.007Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:12:23.048Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.0156,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:12:23.051Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:12:23.672Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:12:23.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.3696,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:12:23.716Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:12:23.751Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.121,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:12:23.753Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:12:23.814Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:12:23.845Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:12:23.851Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.611,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:12:23.855Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:12:23.887Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.3506,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:12:23.889Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:12:23.892Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.9307,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:12:23.896Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:12:23.940Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.4913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:12:23.945Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:12:24.191Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:12:24.217Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:12:24.228Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6944,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:12:24.231Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:12:24.248Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.6336,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:12:24.251Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:12:24.259Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.1515,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:12:24.262Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:12:24.283Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.3399,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:12:24.285Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:13:19.595Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:13:19.633Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1311,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:13:19.634Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:13:19.670Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.5052,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:13:19.672Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:13:19.788Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:13:19.797Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:13:19.855Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.1848,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:13:19.856Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:13:19.858Z","event":"tenants.lookup.exact.ok","rid":null,"ms":69.0924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:13:19.860Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:13:19.887Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.4355,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:13:19.891Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:13:19.903Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.8353,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:13:19.905Z","event":"tenancy.ok","rid":null,"ms":108,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:13:19.955Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:13:19.983Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1428,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:13:19.985Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:13:20.067Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:13:20.154Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:13:20.157Z","event":"tenants.lookup.default.ok","rid":null,"ms":171.0006,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:13:20.159Z","event":"tenancy.ok","rid":null,"ms":204,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:13:20.197Z","event":"tenants.lookup.exact.ok","rid":null,"ms":126.8154,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:13:20.199Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:13:20.206Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.356,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:13:20.209Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:13:20.223Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.6553,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:13:20.226Z","event":"tenancy.ok","rid":null,"ms":159,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:13:20.240Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4808,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:13:20.248Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:13:20.386Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:13:20.422Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.9067,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:13:20.424Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:13:20.452Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.9721,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:13:20.454Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:13:20.607Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:13:20.650Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.9643,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:13:20.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:13:20.683Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4771,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:13:20.685Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:13:21.064Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:13:21.086Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.8676,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:13:21.088Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:13:21.119Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.0022,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:13:21.121Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:13:21.237Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:13:21.263Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.3872,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:13:21.265Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:13:21.287Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.3208,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:13:21.288Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:14:19.600Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:14:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.3767,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:14:19.634Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:14:19.672Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:14:19.674Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:14:19.771Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:14:19.785Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:14:19.813Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2111,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:14:19.815Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:14:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.675,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:14:19.818Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:14:19.842Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:14:19.858Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.903,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:14:19.862Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:14:19.884Z","event":"tenants.lookup.default.ok","rid":null,"ms":68.6293,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:14:19.886Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:14:19.901Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.9005,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:14:19.903Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:14:19.931Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.5333,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:14:19.934Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:14:20.138Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:14:20.153Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:14:20.175Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.5596,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:14:20.181Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:14:20.184Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.9699,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:14:20.185Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:14:20.210Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.0945,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:14:20.214Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:14:20.227Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.2923,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:14:20.229Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:14:20.553Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:14:20.596Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.8443,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:14:20.598Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:14:20.640Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.8399,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:14:20.643Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:14:20.841Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:14:20.898Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.1906,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:14:20.901Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:14:20.915Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:14:20.957Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:14:20.965Z","event":"tenants.lookup.default.ok","rid":null,"ms":62.0693,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:14:20.966Z","event":"tenancy.ok","rid":null,"ms":125,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:14:20.982Z","event":"tenants.lookup.exact.ok","rid":null,"ms":64.4416,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:14:20.986Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:14:21.004Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.1543,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:14:21.009Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:14:21.017Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4962,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:14:21.019Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:14:21.057Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.2947,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:14:21.062Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T21:15:19.599Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:15:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.6137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:15:19.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:15:19.669Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.8859,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:15:19.671Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:15:19.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:15:19.762Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:15:19.851Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:15:19.868Z","event":"tenants.lookup.exact.ok","rid":null,"ms":123.1962,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:15:19.870Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:15:19.879Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.3964,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:15:19.881Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:15:19.884Z","event":"tenants.lookup.exact.ok","rid":null,"ms":119.2473,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:15:19.887Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:15:19.890Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.2409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:15:19.897Z","event":"tenancy.ok","rid":null,"ms":157,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:15:19.911Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7021,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:15:19.913Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:15:19.927Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.9427,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:15:19.930Z","event":"tenancy.ok","rid":null,"ms":168,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:15:20.068Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:15:20.085Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:15:20.230Z","event":"tenants.lookup.exact.ok","rid":null,"ms":157.6616,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:15:20.232Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:15:20.235Z","event":"tenants.lookup.exact.ok","rid":null,"ms":143.7612,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:15:20.237Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:15:20.264Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6412,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:15:20.266Z","event":"tenancy.ok","rid":null,"ms":198,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:15:20.281Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.5682,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:15:20.284Z","event":"tenancy.ok","rid":null,"ms":199,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:15:20.414Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:15:20.472Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:15:20.631Z","event":"tenants.lookup.exact.ok","rid":null,"ms":213.8194,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:15:20.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:15:20.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":156.6302,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:15:20.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:15:20.665Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.7968,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:15:20.667Z","event":"tenancy.ok","rid":null,"ms":253,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:15:20.679Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.2259,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:15:20.683Z","event":"tenancy.ok","rid":null,"ms":211,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:15:20.751Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:15:20.790Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.212,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:15:20.792Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:15:20.915Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:15:20.986Z","event":"tenants.lookup.default.ok","rid":null,"ms":192.5267,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:15:20.990Z","event":"tenancy.ok","rid":null,"ms":239,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:15:21.006Z","event":"tenants.lookup.exact.ok","rid":null,"ms":89.1421,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:15:21.010Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:15:21.035Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.1705,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:15:21.037Z","event":"tenancy.ok","rid":null,"ms":122,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:16:19.628Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:16:19.655Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.1005,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:16:19.658Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:16:19.690Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:16:19.694Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6314,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:16:19.698Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:16:19.735Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.5473,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:16:19.738Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:16:19.775Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6117,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:16:19.778Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:16:19.836Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:16:19.866Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.1547,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:16:19.868Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:16:19.891Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.3674,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:16:19.895Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:16:19.931Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:16:19.979Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.4234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:16:19.982Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:16:20.023Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:16:20.026Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:16:20.196Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:16:20.229Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5967,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:16:20.232Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:16:20.272Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.7319,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:16:20.275Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:16:20.298Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:16:20.326Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2321,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:16:20.328Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:16:20.363Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.9372,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:16:20.366Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:16:20.454Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:16:20.488Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:16:20.490Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:16:20.524Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5704,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:16:20.526Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:16:20.571Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:16:20.610Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:16:20.612Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:16:20.645Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0203,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:16:20.647Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:16:20.842Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:16:20.865Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.3379,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:16:20.868Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:16:20.910Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.0844,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:16:20.913Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:16:21.240Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:16:21.270Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.9267,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:16:21.272Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:16:21.312Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.577,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:16:21.314Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:17:19.599Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:17:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.0282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:17:19.643Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:17:19.694Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.2297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:17:19.697Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:17:20.274Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:17:20.295Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.544,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:17:20.297Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:17:20.336Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.8527,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:17:20.338Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:17:20.354Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:17:20.393Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.2394,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:17:20.395Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:17:20.426Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.9578,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:17:20.430Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:17:20.796Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:17:20.831Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.6726,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:17:20.834Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:17:20.854Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:17:20.870Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.9956,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:17:20.873Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:17:20.895Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.4703,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:17:20.897Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:17:20.926Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.1371,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:17:20.928Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:17:21.255Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:17:21.358Z","event":"tenants.lookup.exact.ok","rid":null,"ms":99.785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:17:21.361Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:17:21.399Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.2313,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:17:21.402Z","event":"tenancy.ok","rid":null,"ms":147,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:17:21.576Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:17:21.659Z","event":"tenants.lookup.exact.ok","rid":null,"ms":79.8326,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:17:21.661Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:17:21.693Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.1243,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:17:21.696Z","event":"tenancy.ok","rid":null,"ms":120,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:17:21.959Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:17:21.988Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.4934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:17:21.991Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:17:22.033Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:17:22.039Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.8409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:17:22.044Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:17:22.074Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.2013,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:17:22.076Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:17:22.092Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.4135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:17:22.094Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:17:22.314Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:17:22.358Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.7842,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:17:22.361Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:17:22.387Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.2926,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:17:22.389Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:18:19.596Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:18:19.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.432,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:18:19.641Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:18:19.687Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.311,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:18:19.690Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:18:19.759Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:18:19.788Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.3462,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:18:19.791Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:18:19.821Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:18:19.912Z","event":"tenants.lookup.default.ok","rid":null,"ms":120.0938,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:18:19.916Z","event":"tenancy.ok","rid":null,"ms":157,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:18:19.956Z","event":"tenants.lookup.exact.ok","rid":null,"ms":102.7698,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:18:19.959Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:18:20.000Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.181,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:18:20.003Z","event":"tenancy.ok","rid":null,"ms":182,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:18:20.275Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:18:20.317Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:18:20.328Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.1363,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:18:20.330Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:18:20.356Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.8096,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:18:20.358Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:18:20.361Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:18:20.363Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:18:20.398Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.9611,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:18:20.402Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:18:20.641Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:18:20.685Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.6915,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:18:20.687Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:18:20.727Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5181,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:18:20.730Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:18:20.935Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:18:20.974Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0681,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:18:20.976Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:18:21.006Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:18:21.011Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7862,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:18:21.013Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:18:21.042Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.73,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:18:21.049Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:18:21.068Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9815,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:18:21.073Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:18:21.361Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:18:21.395Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5104,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:18:21.399Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:18:21.436Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:18:21.441Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.8894,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:18:21.442Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:18:21.473Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.9633,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:18:21.474Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:18:21.494Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.7852,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:18:21.497Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:19:19.642Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:19:19.680Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8537,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:19:19.681Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:19:19.714Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:19:19.716Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:19:20.391Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:19:20.437Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.7622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:19:20.439Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:19:20.472Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.4393,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:19:20.474Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:19:20.489Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:19:20.522Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.85,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:19:20.524Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:19:20.552Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.2675,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:19:20.554Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:19:20.844Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:19:20.875Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.966,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:19:20.878Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:19:20.919Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.7825,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:19:20.921Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:19:20.976Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:19:21.014Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2109,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:19:21.020Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:19:21.046Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.7037,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:19:21.049Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:19:23.269Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:19:23.321Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.9713,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:19:23.323Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:19:23.356Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4506,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:19:23.359Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:19:23.926Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:19:23.978Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.4236,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:19:23.980Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:19:24.020Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.3631,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:19:24.022Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:19:24.067Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:19:24.120Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.8601,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:19:24.122Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:19:24.137Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:19:24.152Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.8151,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:19:24.154Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:19:24.171Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5035,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:19:24.172Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:19:24.217Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.5432,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:19:24.220Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:19:24.360Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:19:24.393Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0903,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:19:24.395Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:19:24.444Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.4152,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:19:24.449Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T21:20:19.605Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:20:19.638Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7157,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:20:19.640Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:20:19.676Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:20:19.680Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:20:19.762Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:20:19.805Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.6801,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:20:19.807Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:20:19.849Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.7156,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:20:19.851Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:20:19.865Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:20:19.894Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7808,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:20:19.896Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:20:19.921Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:20:19.938Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.3148,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:20:19.940Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:20:19.973Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.9325,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:20:19.975Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:20:20.019Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.3092,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:20:20.021Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:20:20.315Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:20:20.357Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.0374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:20:20.360Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:20:20.399Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.1214,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:20:20.401Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:20:21.056Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:20:21.095Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.3644,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:20:21.100Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:20:21.137Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.2043,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:20:21.141Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:20:21.244Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:20:21.278Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:20:21.284Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:20:21.288Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:20:21.319Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.5039,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:20:21.321Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:20:21.331Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.2796,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:20:21.335Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:20:21.353Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:20:21.372Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.8264,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:20:21.377Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:20:21.381Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.0942,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:20:21.383Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:20:21.411Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9434,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:20:21.414Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:20:21.542Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:20:21.600Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.8123,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:20:21.602Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:20:21.640Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.2711,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:20:21.642Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:21:19.594Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:21:19.621Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.9042,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:21:19.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:21:19.653Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.9701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:21:19.656Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:21:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:21:19.753Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.0569,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:21:19.755Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:21:19.789Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.1193,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:21:19.791Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:21:19.836Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:21:19.869Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.8681,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:21:19.870Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:21:19.888Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.6094,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:21:19.891Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:21:19.936Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:21:19.967Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.7395,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:21:19.969Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:21:19.984Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:21:20.016Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.4493,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:21:20.019Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:21:20.040Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.5341,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:21:20.045Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:21:20.081Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6288,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:21:20.084Z","event":"tenancy.ok","rid":null,"ms":100,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:21:20.220Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:21:20.273Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.6937,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:21:20.275Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:21:20.309Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7112,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:21:20.313Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:21:20.825Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:21:20.861Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.6852,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:21:20.864Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:21:20.892Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.8582,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:21:20.897Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:21:21.305Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:21:21.333Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.9534,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:21:21.335Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:21:21.367Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.4996,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:21:21.369Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:21:21.415Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:21:21.449Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4082,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:21:21.451Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:21:21.488Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3465,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:21:21.490Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:21:21.568Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:21:21.610Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.8072,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:21:21.614Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:21:21.650Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.5033,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:21:21.652Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:22:19.613Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:22:19.712Z","event":"tenants.lookup.exact.ok","rid":null,"ms":93.1672,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:22:19.714Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:22:19.755Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.0557,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:22:19.759Z","event":"tenancy.ok","rid":null,"ms":146,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:22:20.068Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:22:20.095Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:22:20.100Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.2558,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:22:20.101Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:22:20.115Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:22:20.119Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.7292,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:22:20.128Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:22:20.133Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4224,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:22:20.134Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:22:20.152Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.3852,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:22:20.160Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:22:20.164Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:22:20.167Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:22:20.205Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.4898,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:22:20.212Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:22:21.340Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:22:21.420Z","event":"tenants.lookup.exact.ok","rid":null,"ms":63.33,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:22:21.422Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:22:21.458Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.832,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:22:21.462Z","event":"tenancy.ok","rid":null,"ms":122,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:22:22.393Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:22:22.515Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:22:22.571Z","event":"tenants.lookup.exact.ok","rid":null,"ms":173.3332,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:22:22.573Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:22:22.575Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.8659,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:22:22.577Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:22:22.615Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.6879,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:22:22.617Z","event":"tenancy.ok","rid":null,"ms":224,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:22:22.640Z","event":"tenants.lookup.default.ok","rid":null,"ms":61.1175,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:22:22.656Z","event":"tenancy.ok","rid":null,"ms":141,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:22:22.717Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:22:22.955Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:22:23.242Z","event":"tenants.lookup.exact.ok","rid":null,"ms":516.2438,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:22:23.244Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:22:23.290Z","event":"tenants.lookup.exact.ok","rid":null,"ms":328.1794,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:22:23.292Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:22:23.296Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.4101,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:22:23.298Z","event":"tenancy.ok","rid":null,"ms":582,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:22:23.325Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:22:23.328Z","event":"tenancy.ok","rid":null,"ms":373,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:22:23.572Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:22:23.781Z","event":"tenants.lookup.exact.ok","rid":null,"ms":204.604,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:22:23.783Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:22:23.812Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.1643,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:22:23.814Z","event":"tenancy.ok","rid":null,"ms":242,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:23:19.596Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:23:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.2069,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:23:19.637Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:23:19.681Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.4993,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:23:19.682Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:23:19.811Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:23:19.827Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:23:19.854Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.0396,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:23:19.856Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:23:19.858Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.3677,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:23:19.859Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:23:19.882Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:23:19.895Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.7572,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:23:19.896Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:23:19.912Z","event":"tenants.lookup.default.ok","rid":null,"ms":49.5039,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:23:19.917Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:23:19.933Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.4427,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:23:19.934Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:23:19.975Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.8525,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:23:19.977Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:23:20.167Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:23:20.191Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.1694,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:23:20.193Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:23:20.228Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.2242,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:23:20.230Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:23:20.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:23:20.627Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:23:20.633Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.796,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:23:20.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:23:20.660Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:23:20.663Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:23:20.666Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.7872,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:23:20.668Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:23:20.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.6213,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:23:20.693Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:23:20.891Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:23:20.911Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:23:20.936Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.7803,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:23:20.938Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:23:20.940Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.4401,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:23:20.941Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:23:20.973Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:23:20.976Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:23:20.987Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.2069,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:23:20.994Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:23:21.299Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:23:21.333Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5355,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:23:21.335Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:23:21.377Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.5884,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:23:21.379Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:24:19.615Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:24:19.661Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.5515,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:24:19.663Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:24:19.709Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.9981,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:24:19.711Z","event":"tenancy.ok","rid":null,"ms":97,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:24:20.460Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:24:20.489Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.4726,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:24:20.491Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:24:20.521Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:24:20.528Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.6346,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:24:20.530Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:24:20.563Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.3581,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:24:20.565Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:24:20.705Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:24:20.745Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.876,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:24:20.747Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:24:20.779Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6514,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:24:20.781Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:24:20.858Z","event":"tenants.lookup.default.ok","rid":null,"ms":291.3156,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:24:20.860Z","event":"tenancy.ok","rid":null,"ms":339,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:24:20.978Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:24:21.025Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.8764,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:24:21.027Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:24:21.067Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.9409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:24:21.070Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:24:21.963Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:24:22.001Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.9543,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:24:22.003Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:24:22.016Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:24:22.041Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4557,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:24:22.043Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:24:22.060Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.4482,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:24:22.062Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:24:22.102Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.4401,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:24:22.106Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:24:22.359Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:24:22.408Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.6527,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:24:22.409Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:24:22.432Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0566,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:24:22.440Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:24:23.144Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:24:23.476Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:24:23.488Z","event":"tenants.lookup.exact.ok","rid":null,"ms":331.2372,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:24:23.490Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:24:23.522Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.0564,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:24:23.524Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:24:23.527Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.5113,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:24:23.528Z","event":"tenancy.ok","rid":null,"ms":384,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:24:23.569Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.6349,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:24:23.571Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T21:25:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:25:19.637Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.657,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:25:19.639Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:25:19.655Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:25:19.708Z","event":"tenants.lookup.default.ok","rid":null,"ms":67.5118,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:25:19.709Z","event":"tenancy.ok","rid":null,"ms":116,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:25:19.721Z","event":"tenants.lookup.exact.ok","rid":null,"ms":62.4906,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:25:19.723Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:25:19.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.8881,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:25:19.768Z","event":"tenancy.ok","rid":null,"ms":113,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:25:19.822Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:25:19.855Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.3147,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:25:19.858Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:25:19.905Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.2799,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:25:19.907Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:25:19.968Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:25:20.031Z","event":"tenants.lookup.exact.ok","rid":null,"ms":60.2952,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:25:20.033Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:25:20.067Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:25:20.077Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.6668,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:25:20.078Z","event":"tenancy.ok","rid":null,"ms":110,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:25:20.096Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.5088,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:25:20.098Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:25:20.121Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.3978,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:25:20.123Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:25:20.356Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:25:20.400Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.3246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:25:20.402Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:25:20.419Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:25:20.437Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.9235,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:25:20.440Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:25:20.452Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.1626,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:25:20.458Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:25:20.551Z","event":"tenants.lookup.default.ok","rid":null,"ms":91.3317,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:25:20.554Z","event":"tenancy.ok","rid":null,"ms":135,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:25:20.642Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:25:20.680Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.9208,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:25:20.683Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:25:20.721Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.2396,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:25:20.723Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:25:20.883Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:25:20.975Z","event":"tenants.lookup.exact.ok","rid":null,"ms":89.4095,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:25:20.977Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:25:21.021Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:25:21.023Z","event":"tenancy.ok","rid":null,"ms":140,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:25:21.071Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:25:21.101Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.3474,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:25:21.103Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:25:21.137Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9494,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:25:21.139Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:26:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:26:19.657Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.1659,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:26:19.660Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:26:19.695Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5019,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:26:19.697Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:26:20.015Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:26:20.077Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.1014,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:26:20.080Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:26:20.142Z","event":"tenants.lookup.default.ok","rid":null,"ms":60.5969,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:26:20.145Z","event":"tenancy.ok","rid":null,"ms":130,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:26:20.296Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:26:20.365Z","event":"tenants.lookup.exact.ok","rid":null,"ms":66.1591,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:26:20.367Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:26:20.413Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.6495,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:26:20.416Z","event":"tenancy.ok","rid":null,"ms":120,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:26:20.488Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:26:20.555Z","event":"tenants.lookup.exact.ok","rid":null,"ms":62.1928,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:26:20.557Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:26:20.605Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.1098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:26:20.608Z","event":"tenancy.ok","rid":null,"ms":120,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:26:20.854Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:26:20.919Z","event":"tenants.lookup.exact.ok","rid":null,"ms":62.2501,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:26:20.921Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:26:20.977Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.9637,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:26:20.982Z","event":"tenancy.ok","rid":null,"ms":128,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:26:21.067Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:26:21.105Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1032,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:26:21.108Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:26:21.140Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1344,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:26:21.143Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:26:21.496Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:26:21.515Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:26:21.524Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.0304,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:26:21.529Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:26:21.563Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.7302,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:26:21.564Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:26:21.573Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.1457,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:26:21.575Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:26:21.602Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0191,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:26:21.605Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:26:21.731Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:26:21.814Z","event":"tenants.lookup.exact.ok","rid":null,"ms":80.9001,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:26:21.818Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:26:21.870Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.4205,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:26:21.872Z","event":"tenancy.ok","rid":null,"ms":141,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:26:22.308Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:26:22.363Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.1506,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:26:22.366Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:26:22.395Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.3124,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:26:22.397Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:27:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:27:19.623Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.5653,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:27:19.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:27:19.644Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:27:19.664Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3199,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:27:19.667Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:27:19.684Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.2917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:27:19.686Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:27:19.718Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.7731,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:27:19.719Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:27:19.871Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:27:19.894Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:27:19.918Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.4101,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:27:19.920Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:27:19.922Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.4823,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:27:19.926Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:27:19.962Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.2851,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:27:19.963Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:27:19.973Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.2154,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:27:19.976Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:27:20.004Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:27:20.037Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.6655,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:27:20.038Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:27:20.073Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2411,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:27:20.075Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:27:20.464Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:27:20.491Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.6634,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:27:20.493Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:27:20.539Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:27:20.550Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.8576,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:27:20.554Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:27:20.595Z","event":"tenants.lookup.exact.ok","rid":null,"ms":54.1297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:27:20.598Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:27:20.640Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.8564,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:27:20.643Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:27:21.019Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:27:21.064Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.1934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:27:21.067Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:27:21.092Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.2823,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:27:21.096Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:27:21.178Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:27:21.217Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.6858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:27:21.219Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:27:21.224Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:27:21.238Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.2077,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:27:21.240Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:27:21.269Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.8404,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:27:21.271Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:27:21.298Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.9371,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:27:21.301Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:28:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:28:19.623Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4348,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:28:19.624Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:28:19.645Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:28:19.647Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:28:19.650Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:28:19.679Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.3167,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:28:19.680Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:28:19.718Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:28:19.760Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:28:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:28:19.792Z","event":"tenants.lookup.default.ok","rid":null,"ms":110.8131,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:28:19.793Z","event":"tenancy.ok","rid":null,"ms":148,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:28:19.802Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.4727,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:28:19.803Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:28:19.805Z","event":"tenants.lookup.exact.ok","rid":null,"ms":85.4478,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:28:19.806Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:28:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1689,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:28:19.819Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:28:19.832Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.8663,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:28:19.834Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:28:19.841Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.8895,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:28:19.843Z","event":"tenancy.ok","rid":null,"ms":125,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:28:19.852Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.1265,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:28:19.856Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:28:19.909Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:28:19.938Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4328,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:28:19.939Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:28:19.953Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.8071,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:28:19.954Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:28:20.054Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:28:20.068Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:28:20.082Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:28:20.085Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:28:20.097Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.9484,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:28:20.098Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:28:20.113Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.6234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:28:20.114Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:28:20.123Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.0297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:28:20.124Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:28:20.148Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:28:20.170Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.7809,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:28:20.171Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:28:20.191Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:28:20.193Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.8986,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:28:20.194Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:28:20.212Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.0514,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:28:20.213Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:28:20.232Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.6804,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:28:20.233Z","event":"tenancy.ok","rid":null,"ms":42,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:29:19.578Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:29:19.604Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.5391,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:29:19.606Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:29:19.634Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:29:19.637Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.2948,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:29:19.638Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:29:19.657Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.8826,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:29:19.658Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:29:19.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:29:19.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:29:19.697Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.0891,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:29:19.698Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:29:19.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.3622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:29:19.715Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:29:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.67,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:29:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:29:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.3274,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:29:19.758Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:29:19.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:29:19.768Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.7641,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:29:19.769Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:29:19.801Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:29:19.803Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.7939,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:29:19.804Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:29:19.832Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.3226,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:29:19.833Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:29:19.835Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.4389,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:29:19.836Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:29:19.852Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:29:19.854Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.0083,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:29:19.856Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:29:19.877Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.8793,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:29:19.878Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:29:19.912Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0173,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:29:19.914Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:29:19.967Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:29:20.011Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.6593,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:29:20.012Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:29:20.019Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:29:20.033Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:29:20.055Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.3991,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:29:20.056Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:29:20.063Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.8779,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:29:20.064Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:29:20.066Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8419,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:29:20.067Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:29:20.103Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.0281,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:29:20.105Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:29:20.112Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.0396,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:29:20.114Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T21:30:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:30:19.635Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:30:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0355,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:30:19.642Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:30:19.659Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.6084,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:30:19.661Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:30:19.662Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.6158,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:30:19.663Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:30:19.673Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:30:19.696Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3038,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:30:19.697Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:30:19.701Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.6215,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:30:19.702Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:30:19.720Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.9459,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:30:19.721Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:30:19.755Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:30:19.777Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.3041,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:30:19.779Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:30:19.796Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:30:19.800Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:30:19.815Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4443,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:30:19.816Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:30:19.823Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.1184,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:30:19.824Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:30:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.781,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:30:19.835Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:30:19.846Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:30:19.854Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:30:19.858Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:30:19.859Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:30:19.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0295,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:30:19.867Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:30:19.874Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.0803,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:30:19.875Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:30:19.878Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.6635,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:30:19.880Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:30:19.903Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.7872,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:30:19.905Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:30:19.914Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9257,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:30:19.916Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:30:19.995Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:30:20.014Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.8065,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:30:20.016Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:30:20.033Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.8958,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:30:20.034Z","event":"tenancy.ok","rid":null,"ms":39,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:30:20.049Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:30:20.078Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.919,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:30:20.080Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:30:20.114Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.2009,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:30:20.116Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:31:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:31:19.624Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:31:19.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.3436,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:31:19.629Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:31:19.659Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.967,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:31:19.661Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:31:19.670Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.6734,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:31:19.671Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:31:19.699Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.5574,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:31:19.700Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:31:19.715Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:31:19.736Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:31:19.738Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.9281,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:31:19.739Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:31:19.750Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:31:19.762Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:31:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":54.5571,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:31:19.796Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:31:19.803Z","event":"tenants.lookup.exact.ok","rid":null,"ms":66.4494,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:31:19.804Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:31:19.806Z","event":"tenants.lookup.exact.ok","rid":null,"ms":54.2915,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:31:19.807Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:31:19.821Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.6483,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:31:19.822Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:31:19.824Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.6529,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:31:19.825Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:31:19.837Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:31:19.839Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.0033,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:31:19.840Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:31:19.855Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0338,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:31:19.857Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:31:19.868Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.4094,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:31:19.870Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:31:19.904Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.8592,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:31:19.906Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:31:19.943Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:31:19.947Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:31:19.974Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.4637,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:31:19.975Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:31:19.978Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.2674,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:31:19.979Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:31:19.981Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:31:19.994Z","event":"tenants.lookup.exact.ok","rid":null,"ms":11.9698,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:31:19.996Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:31:19.998Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.552,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:31:19.999Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:31:20.005Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.7864,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:31:20.007Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:31:20.014Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.6114,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:31:20.015Z","event":"tenancy.ok","rid":null,"ms":34,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:32:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:32:19.638Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:32:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.4976,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:32:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:32:19.660Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.185,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:32:19.662Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:32:19.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.1115,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:32:19.676Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:32:19.681Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.5751,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:32:19.682Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:32:19.736Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:32:19.756Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.6273,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:32:19.758Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:32:19.762Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:32:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:32:19.795Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:32:19.797Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9445,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:32:19.798Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:32:19.805Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.8322,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:32:19.806Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:32:19.808Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.0874,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:32:19.809Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:32:19.811Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:32:19.819Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.0238,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:32:19.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:32:19.845Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.4934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:32:19.847Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:32:19.853Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.3193,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:32:19.855Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:32:19.866Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.2669,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:32:19.868Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:32:19.869Z","event":"tenants.lookup.default.ok","rid":null,"ms":59.6621,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:32:19.871Z","event":"tenancy.ok","rid":null,"ms":109,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:32:19.900Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.2924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:32:19.901Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:32:19.945Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:32:19.974Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.8246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:32:19.976Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:32:19.978Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:32:19.995Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.6883,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:32:19.997Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:32:20.004Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.1971,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:32:20.005Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:32:20.017Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:32:20.039Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.2388,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:32:20.040Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:32:20.041Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.29,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:32:20.043Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:32:20.074Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0433,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:32:20.075Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:33:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:33:19.629Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:33:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.7839,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:33:19.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:33:19.652Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.1805,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:33:19.653Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:33:19.675Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:33:19.682Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.1475,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:33:19.684Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:33:19.693Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.851,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:33:19.694Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:33:19.715Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.0054,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:33:19.716Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:33:19.735Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.0492,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:33:19.738Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:33:19.761Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:33:19.781Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.2779,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:33:19.782Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:33:19.791Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:33:19.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:33:19.807Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:33:19.815Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7478,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:33:19.816Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:33:19.821Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.3593,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:33:19.822Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:33:19.823Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.1522,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:33:19.824Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:33:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:33:19.826Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:33:19.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.5999,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:33:19.867Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:33:19.873Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.4852,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:33:19.876Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:33:19.882Z","event":"tenants.lookup.default.ok","rid":null,"ms":57.8577,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:33:19.884Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:33:19.903Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:33:19.939Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.2237,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:33:19.941Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:33:19.981Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:33:19.983Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.2021,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:33:19.984Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:33:19.996Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.0632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:33:19.997Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:33:20.018Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.709,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:33:20.019Z","event":"tenancy.ok","rid":null,"ms":38,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:33:20.026Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:33:20.060Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.8491,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:33:20.061Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:33:20.094Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.0618,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:33:20.096Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:34:19.585Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:34:19.630Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9386,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:34:19.631Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:34:19.642Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:34:19.655Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.6886,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:34:19.656Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:34:19.663Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.7711,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:34:19.664Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:34:19.690Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:34:19.701Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.6599,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:34:19.702Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:34:19.721Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.4285,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:34:19.722Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:34:19.745Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:34:19.750Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.738,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:34:19.751Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:34:19.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:34:19.780Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.4086,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:34:19.781Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:34:19.783Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.0438,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:34:19.784Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:34:19.820Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3843,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:34:19.821Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:34:19.825Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.0909,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:34:19.826Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:34:19.833Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:34:19.862Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.773,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:34:19.863Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:34:19.874Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:34:19.897Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.853,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:34:19.899Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:34:19.908Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.3552,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:34:19.909Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:34:19.930Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:34:19.945Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.5827,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:34:19.947Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:34:19.960Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.1408,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:34:19.961Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:34:19.981Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.3221,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:34:19.982Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:34:19.992Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:34:20.020Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.241,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:34:20.021Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:34:20.029Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:34:20.069Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.283,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:34:20.070Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:34:20.073Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.3449,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:34:20.074Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:34:20.117Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.9698,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:34:20.118Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T21:35:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:35:19.628Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.6408,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:35:19.630Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:35:19.635Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:35:19.661Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.9624,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:35:19.661Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:35:19.664Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.9706,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:35:19.664Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:35:19.690Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:35:19.701Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0092,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:35:19.702Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:35:19.713Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:35:19.715Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:35:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.0585,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:35:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:35:19.740Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.4154,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:35:19.741Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:35:19.746Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.5137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:35:19.747Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:35:19.755Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.0204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:35:19.756Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:35:19.776Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4029,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:35:19.778Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:35:19.786Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0052,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:35:19.787Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:35:19.844Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:35:19.851Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:35:19.855Z","event":"tenants.lookup.exact.ok","rid":null,"ms":10.6425,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:35:19.857Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:35:19.878Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.796,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:35:19.879Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:35:19.882Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:35:19.885Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.4061,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:35:19.887Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:35:19.906Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:35:19.916Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.5212,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:35:19.919Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:35:19.926Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.6356,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:35:19.928Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:35:19.932Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.2454,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:35:19.934Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:35:19.956Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.4073,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:35:19.958Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:35:19.965Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.1568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:35:19.966Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:35:20.046Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:35:20.077Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.2793,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:35:20.078Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:35:20.096Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.3135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:35:20.097Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:36:19.583Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:36:19.624Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:36:19.628Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.717,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:36:19.631Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:36:19.660Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.8874,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:36:19.661Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:36:19.663Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.329,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:36:19.663Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:36:19.694Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:36:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:36:19.708Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.2911,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:36:19.709Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:36:19.721Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.157,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:36:19.722Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:36:19.731Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.1769,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:36:19.732Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:36:19.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7518,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:36:19.763Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:36:19.767Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.8162,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:36:19.768Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:36:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:36:19.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.0975,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:36:19.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:36:19.832Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:36:19.836Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.8974,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:36:19.837Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:36:19.858Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:36:19.859Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.7288,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:36:19.860Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:36:19.879Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.8454,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:36:19.882Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:36:19.884Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.7356,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:36:19.885Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:36:19.909Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:36:19.917Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2198,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:36:19.918Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:36:19.935Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.4009,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:36:19.937Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:36:19.956Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.0843,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:36:19.957Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:36:19.999Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:36:20.001Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:36:20.096Z","event":"tenants.lookup.exact.ok","rid":null,"ms":93.9531,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:36:20.098Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:36:20.100Z","event":"tenants.lookup.exact.ok","rid":null,"ms":99.8378,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:36:20.101Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:36:20.115Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.1516,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:36:20.116Z","event":"tenancy.ok","rid":null,"ms":115,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:36:20.119Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.4133,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:36:20.120Z","event":"tenancy.ok","rid":null,"ms":121,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:37:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:37:19.630Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:37:19.633Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2377,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:37:19.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:37:19.664Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8801,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:37:19.665Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:37:19.666Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.0892,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:37:19.669Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:37:19.688Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:37:19.702Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.3168,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:37:19.703Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:37:19.705Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.7264,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:37:19.706Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:37:19.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:37:19.725Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.9843,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:37:19.726Z","event":"tenancy.ok","rid":null,"ms":38,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:37:19.764Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.2747,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:37:19.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:37:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:37:19.802Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:37:19.805Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.4769,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:37:19.806Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:37:19.829Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.9316,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:37:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:37:19.833Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9476,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:37:19.834Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:37:19.860Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:37:19.862Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6749,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:37:19.864Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:37:19.871Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.5421,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:37:19.872Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:37:19.879Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:37:19.882Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.5133,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:37:19.883Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:37:19.898Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.601,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:37:19.899Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:37:19.902Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.5885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:37:19.904Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:37:19.922Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.506,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:37:19.924Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:37:19.939Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:37:19.973Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.6047,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:37:19.974Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:37:20.002Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.5456,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:37:20.004Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:37:20.012Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:37:20.048Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.0266,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:37:20.049Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:37:20.082Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4794,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:37:20.083Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:38:19.583Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:38:19.629Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:38:19.637Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.4693,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:38:19.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:38:19.670Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.6725,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:38:19.671Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:38:19.673Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:38:19.673Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:38:19.705Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:38:19.709Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.7859,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:38:19.711Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:38:19.748Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.0289,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:38:19.749Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:38:19.783Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.3346,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:38:19.784Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:38:19.792Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:38:19.796Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:38:19.805Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:38:19.824Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1507,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:38:19.825Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:38:19.827Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.3401,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:38:19.828Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:38:19.831Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.6023,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:38:19.833Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:38:19.864Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.4954,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:38:19.865Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:38:19.870Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.1303,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:38:19.872Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:38:19.878Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.6517,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:38:19.880Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:38:19.887Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:38:19.904Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.0298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:38:19.905Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:38:19.934Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:38:19.948Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.8826,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:38:19.949Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:38:19.964Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.3207,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:38:19.965Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:38:19.983Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.9076,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:38:19.985Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:38:20.016Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:38:20.043Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.0524,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:38:20.044Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:38:20.058Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:38:20.083Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5261,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:38:20.085Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:38:20.091Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.1211,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:38:20.093Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:38:20.129Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.2067,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:38:20.130Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:39:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:39:19.654Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:39:19.655Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:39:19.660Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:39:19.685Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.573,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:39:19.686Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:39:19.694Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1157,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:39:19.696Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:39:19.699Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:39:19.724Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.9552,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:39:19.726Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:39:19.732Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4139,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:39:19.733Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:39:19.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:39:19.759Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:39:19.770Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.662,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:39:19.771Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:39:19.777Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.7977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:39:19.778Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:39:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:39:19.784Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.2033,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:39:19.785Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:39:19.808Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4996,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:39:19.809Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:39:19.814Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.7234,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:39:19.816Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:39:19.822Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.9309,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:39:19.823Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:39:19.857Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6397,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:39:19.859Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:39:19.878Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:39:19.903Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6274,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:39:19.904Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:39:19.927Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.4613,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:39:19.929Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:39:20.015Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:39:20.023Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:39:20.043Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.7174,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:39:20.043Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:39:20.045Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.3246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:39:20.045Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:39:20.069Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:39:20.086Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.9317,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:39:20.087Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:39:20.094Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.2209,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:39:20.095Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:39:20.101Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5815,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:39:20.102Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:39:20.124Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.0121,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:39:20.125Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T21:40:19.596Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:40:19.645Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:40:19.647Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.2346,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:40:19.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:40:19.681Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:40:19.683Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.0999,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:40:19.683Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:40:19.685Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.9586,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:40:19.686Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:40:19.699Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.2426,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:40:19.700Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:40:19.703Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.1538,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:40:19.704Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:40:19.718Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.0697,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:40:19.719Z","event":"tenancy.ok","rid":null,"ms":38,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:40:19.728Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:40:19.742Z","event":"tenants.lookup.exact.ok","rid":null,"ms":13.5688,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:40:19.743Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:40:19.761Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:40:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:40:19.778Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:40:19.779Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:40:19.789Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5838,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:40:19.790Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:40:19.799Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.5026,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:40:19.800Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:40:19.823Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4573,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:40:19.825Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:40:19.831Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6529,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:40:19.832Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:40:19.863Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:40:19.866Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:40:19.899Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.3831,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:40:19.900Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:40:19.905Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.5456,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:40:19.906Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:40:19.922Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.9407,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:40:19.923Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:40:19.929Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7706,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:40:19.931Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:40:19.975Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:40:19.999Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.7466,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:40:20.001Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:40:20.022Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.4047,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:40:20.023Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:40:20.035Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:40:20.066Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.4719,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:40:20.067Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:40:20.099Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.8059,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:40:20.100Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:41:19.594Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:41:19.638Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:41:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.2857,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:41:19.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:41:19.666Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.431,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:41:19.668Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:41:19.676Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.7154,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:41:19.677Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:41:19.705Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.0116,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:41:19.706Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:41:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:41:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:41:19.747Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:41:19.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.0401,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:41:19.750Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:41:19.751Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.5212,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:41:19.753Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:41:19.762Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:41:19.784Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.3963,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:41:19.786Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:41:19.787Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.7392,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:41:19.788Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:41:19.790Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0465,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:41:19.791Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:41:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2233,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:41:19.795Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:41:19.825Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.0922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:41:19.826Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:41:19.833Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.6648,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:41:19.834Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:41:19.906Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:41:19.925Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:41:19.946Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.4401,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:41:19.948Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:41:19.952Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.8428,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:41:19.953Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:41:19.958Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:41:19.990Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.4034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:41:19.991Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:41:19.995Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.0953,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:41:19.997Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:41:20.004Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.0035,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:41:20.007Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:41:20.025Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.5801,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:41:20.026Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:41:20.088Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:41:20.105Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.2477,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:41:20.107Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:41:20.146Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.0468,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:41:20.146Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:42:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:42:19.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.7802,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:42:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:42:19.646Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:42:19.660Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.0384,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:42:19.661Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:42:19.685Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.5117,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:42:19.687Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:42:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:42:19.720Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7315,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:42:19.721Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:42:19.729Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:42:19.739Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.9855,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:42:19.740Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:42:19.744Z","event":"tenants.lookup.exact.ok","rid":null,"ms":13.7657,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:42:19.745Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:42:19.760Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.3557,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:42:19.761Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:42:19.768Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.7179,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:42:19.769Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:42:19.777Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:42:19.804Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.9557,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:42:19.805Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:42:19.839Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3415,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:42:19.841Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:42:19.849Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:42:19.866Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:42:19.869Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.2666,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:42:19.870Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:42:19.879Z","event":"tenants.lookup.exact.ok","rid":null,"ms":11.9182,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:42:19.880Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:42:19.900Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.7874,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:42:19.902Z","event":"tenancy.ok","rid":null,"ms":36,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:42:19.910Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.3205,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:42:19.911Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:42:19.937Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:42:19.941Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:42:19.959Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.0357,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:42:19.961Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:42:19.962Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.038,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:42:19.963Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:42:19.980Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9775,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:42:19.981Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:42:19.989Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.9876,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:42:19.991Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:42:20.091Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:42:20.120Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.6835,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:42:20.122Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:42:20.144Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.3195,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:42:20.145Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:43:19.596Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:43:19.639Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:43:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.7785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:43:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:43:19.665Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.1486,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:43:19.666Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:43:19.668Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.1308,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:43:19.669Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:43:19.697Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:43:19.706Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.1244,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:43:19.707Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:43:19.721Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.9753,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:43:19.722Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:43:19.729Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:43:19.746Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.6654,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:43:19.748Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:43:19.757Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.1683,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:43:19.758Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:43:19.770Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:43:19.786Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.0067,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:43:19.787Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:43:19.789Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.756,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:43:19.790Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:43:19.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:43:19.811Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:43:19.827Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.7017,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:43:19.828Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:43:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.5931,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:43:19.835Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:43:19.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.2346,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:43:19.837Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:43:19.864Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.5972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:43:19.865Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:43:19.868Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1848,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:43:19.869Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:43:19.902Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:43:19.920Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.3298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:43:19.921Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:43:19.940Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.5249,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:43:19.941Z","event":"tenancy.ok","rid":null,"ms":39,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:43:19.973Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:43:19.979Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:43:20.000Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.0634,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:43:20.001Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:43:20.003Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1859,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:43:20.004Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:43:20.027Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.9854,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:43:20.028Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:43:20.033Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1387,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:43:20.034Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:44:19.578Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:44:19.615Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:44:19.628Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.6608,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:44:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:44:19.645Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4904,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:44:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:44:19.646Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.6146,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:44:19.647Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:44:19.671Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.7378,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:44:19.673Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:44:19.680Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:44:19.685Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:44:19.711Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.626,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:44:19.712Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:44:19.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.6491,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:44:19.714Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:44:19.716Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:44:19.719Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:44:19.752Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.8279,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:44:19.754Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:44:19.760Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:44:19.761Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:44:19.770Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.6896,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:44:19.772Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:44:19.775Z","event":"tenants.lookup.exact.ok","rid":null,"ms":54.3132,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:44:19.776Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:44:19.791Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.8782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:44:19.792Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:44:19.807Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.5635,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:44:19.809Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:44:19.867Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:44:19.885Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.8294,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:44:19.886Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:44:19.913Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:44:19.927Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6607,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:44:19.928Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:44:19.936Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.4849,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:44:19.937Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:44:19.947Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:44:19.976Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.3703,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:44:19.977Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:44:19.982Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.687,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:44:19.983Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:44:20.011Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.6701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:44:20.013Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:44:20.050Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:44:20.086Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.2977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:44:20.087Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:44:20.126Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.0931,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:44:20.127Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T21:45:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:45:19.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.3733,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:45:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:45:19.641Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:45:19.670Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.3332,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:45:19.671Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:45:19.677Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.0393,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:45:19.678Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:45:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:45:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:45:19.708Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.9151,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:45:19.709Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:45:19.714Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2773,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:45:19.715Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:45:19.718Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:45:19.746Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.1243,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:45:19.747Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:45:19.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.7667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:45:19.750Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:45:19.751Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6048,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:45:19.752Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:45:19.762Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:45:19.786Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.4083,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:45:19.787Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:45:19.793Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.3141,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:45:19.796Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:45:19.803Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.2916,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:45:19.809Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:45:19.827Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.9738,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:45:19.828Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:45:19.860Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:45:19.890Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.2817,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:45:19.892Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:45:19.906Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:45:19.927Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7316,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:45:19.929Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:45:19.935Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.8361,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:45:19.936Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:45:19.947Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:45:19.966Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.5346,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:45:19.967Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:45:19.973Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.061,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:45:19.975Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:45:20.006Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.8668,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:45:20.007Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:45:20.046Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:45:20.092Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.1852,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:45:20.093Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:45:20.125Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.3397,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:45:20.126Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:46:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:46:19.629Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:46:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.7275,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:46:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:46:19.671Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.4157,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:46:19.672Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:46:19.673Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.8807,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:46:19.674Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:46:19.679Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:46:19.700Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:46:19.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:46:19.712Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.2572,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:46:19.713Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:46:19.715Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.8257,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:46:19.716Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:46:19.723Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.0726,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:46:19.725Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:46:19.748Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.2619,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:46:19.749Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:46:19.751Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9419,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:46:19.752Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:46:19.756Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4176,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:46:19.757Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:46:19.767Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:46:19.788Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.6775,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:46:19.789Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:46:19.798Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.2777,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:46:19.799Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:46:19.829Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.1858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:46:19.831Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:46:19.880Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:46:19.891Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:46:19.914Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.9261,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:46:19.915Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:46:19.917Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.9525,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:46:19.918Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:46:19.948Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5174,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:46:19.949Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:46:19.954Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0808,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:46:19.955Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:46:19.998Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:46:20.028Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.1029,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:46:20.029Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:46:20.046Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:46:20.072Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.806,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:46:20.073Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:46:20.074Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.771,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:46:20.075Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:46:20.118Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.6488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:46:20.119Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:47:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:47:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.9885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:47:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:47:19.645Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:47:19.668Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.4284,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:47:19.669Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:47:19.671Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.6101,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:47:19.672Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:47:19.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:47:19.710Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:47:19.712Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.2843,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:47:19.714Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:47:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.8016,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:47:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:47:19.744Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:47:19.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.7571,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:47:19.750Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:47:19.751Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.5589,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:47:19.752Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:47:19.758Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:47:19.788Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.7954,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:47:19.789Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:47:19.794Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.7202,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:47:19.795Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:47:19.796Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.1934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:47:19.798Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:47:19.834Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.9133,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:47:19.835Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:47:19.841Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.7712,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:47:19.842Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:47:19.920Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:47:19.926Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:47:19.948Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.9438,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:47:19.949Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:47:19.950Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.149,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:47:19.951Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:47:19.960Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:47:19.987Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.3647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:47:19.988Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:47:19.990Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:47:19.991Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:47:19.995Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.2404,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:47:19.996Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:47:20.008Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.5751,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:47:20.010Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:47:20.070Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:47:20.087Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:47:20.088Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:47:20.127Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.9864,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:47:20.128Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:48:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:48:19.632Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:48:19.640Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.4358,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:48:19.642Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:48:19.673Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.7578,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:48:19.674Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:48:19.675Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7756,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:48:19.676Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:48:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:48:19.709Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.8364,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:48:19.710Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:48:19.711Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.3321,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:48:19.712Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:48:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:48:19.729Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:48:19.753Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.4682,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:48:19.755Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:48:19.756Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.2239,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:48:19.757Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:48:19.763Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.5211,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:48:19.764Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:48:19.767Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:48:19.789Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.4924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:48:19.790Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:48:19.797Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.2709,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:48:19.798Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:48:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6472,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:48:19.801Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:48:19.815Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:48:19.831Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0587,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:48:19.833Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:48:19.848Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.317,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:48:19.849Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:48:19.888Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9973,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:48:19.889Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:48:19.935Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:48:19.971Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.8077,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:48:19.973Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:48:19.976Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:48:19.995Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:48:20.009Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.5255,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:48:20.010Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:48:20.011Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.4589,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:48:20.013Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:48:20.014Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.088,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:48:20.015Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:48:20.048Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.846,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:48:20.049Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:48:20.054Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.6772,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:48:20.054Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:49:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:49:19.629Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:49:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7842,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:49:19.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:49:19.650Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.6246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:49:19.652Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:49:19.661Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0745,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:49:19.662Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:49:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:49:19.688Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.8061,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:49:19.689Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:49:19.699Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:49:19.708Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.1761,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:49:19.709Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:49:19.713Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.8222,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:49:19.714Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:49:19.729Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:49:19.748Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:49:19.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.5598,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:49:19.751Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:49:19.760Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.6413,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:49:19.761Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:49:19.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.8406,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:49:19.763Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:49:19.787Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.3183,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:49:19.788Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:49:19.794Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.3611,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:49:19.795Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:49:19.806Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:49:19.830Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4458,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:49:19.831Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:49:19.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.9427,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:49:19.837Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:49:19.868Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.1918,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:49:19.869Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:49:19.902Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:49:19.928Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.2049,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:49:19.929Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:49:19.950Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:49:19.973Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.2703,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:49:19.974Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:49:19.975Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.02,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:49:19.976Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:49:19.994Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:49:20.013Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.8622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:49:20.014Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:49:20.023Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.774,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:49:20.024Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:49:20.054Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.1302,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:49:20.055Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T21:50:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:50:19.622Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:50:19.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.1501,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:50:19.637Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:50:19.656Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.3559,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:50:19.656Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:50:19.662Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.8231,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:50:19.663Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:50:19.673Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:50:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.1042,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:50:19.690Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:50:19.696Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.4019,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:50:19.697Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:50:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:50:19.727Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:50:19.733Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:50:19.735Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3575,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:50:19.736Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:50:19.742Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.076,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:50:19.743Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:50:19.745Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.7948,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:50:19.745Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:50:19.746Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.7679,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:50:19.747Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:50:19.773Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:50:19.778Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.0917,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:50:19.779Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:50:19.787Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.0313,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:50:19.788Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:50:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.2767,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:50:19.795Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:50:19.802Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:50:19.804Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.0538,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:50:19.805Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:50:19.829Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.6851,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:50:19.830Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:50:19.832Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.6671,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:50:19.833Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:50:19.863Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:50:19.864Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:50:19.947Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:50:19.952Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:50:19.970Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.738,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:50:19.971Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:50:19.972Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.9382,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:50:19.973Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:50:20.003Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9577,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:50:20.005Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:50:20.016Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.0005,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:50:20.018Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:51:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:51:19.631Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.0113,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:51:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:51:19.652Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:51:19.655Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.5647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:51:19.656Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:51:19.689Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.5948,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:51:19.691Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:51:19.702Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:51:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:51:19.726Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4054,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:51:19.727Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:51:19.735Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.3091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:51:19.736Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:51:19.741Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:51:19.743Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.164,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:51:19.744Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:51:19.774Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.6956,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:51:19.775Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:51:19.777Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5824,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:51:19.778Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:51:19.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.683,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:51:19.785Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:51:19.793Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:51:19.801Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:51:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.9775,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:51:19.805Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:51:19.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.886,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:51:19.812Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:51:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.303,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:51:19.826Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:51:19.830Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.8627,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:51:19.832Z","event":"tenancy.ok","rid":null,"ms":39,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:51:19.851Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.042,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:51:19.854Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:51:19.973Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:51:20.004Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.3484,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:51:20.005Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:51:20.024Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.736,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:51:20.025Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:51:20.033Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:51:20.053Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:51:20.070Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.6356,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:51:20.071Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:51:20.073Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.1966,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:51:20.074Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:51:20.104Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7005,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:51:20.105Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:51:20.109Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4075,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:51:20.110Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:52:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:52:19.627Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:52:19.630Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8635,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:52:19.632Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:52:19.645Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.7332,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:52:19.646Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:52:19.649Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.8464,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:52:19.651Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:52:19.670Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.6652,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:52:19.672Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:52:19.683Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:52:19.703Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:52:19.715Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.1603,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:52:19.716Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:52:19.718Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:52:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:52:19.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.3825,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:52:19.727Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:52:19.754Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1814,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:52:19.755Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:52:19.757Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4758,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:52:19.758Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:52:19.760Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7377,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:52:19.762Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:52:19.768Z","event":"tenants.lookup.default.ok","rid":null,"ms":51.7997,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:52:19.770Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:52:19.796Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.1646,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:52:19.798Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:52:19.804Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.7905,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:52:19.806Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:52:19.813Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:52:19.832Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.6432,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:52:19.833Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:52:19.871Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.3071,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:52:19.872Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:52:19.902Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:52:19.934Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.8858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:52:19.935Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:52:19.949Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:52:19.970Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3658,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:52:19.971Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:52:19.976Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.3754,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:52:19.977Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:52:20.010Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.6541,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:52:20.011Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:52:20.018Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:52:20.055Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.6285,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:52:20.056Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:52:20.089Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.538,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:52:20.090Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:53:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:53:19.618Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7155,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:53:19.619Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:53:19.646Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:53:19.650Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4413,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:53:19.652Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:53:19.665Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.8264,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:53:19.667Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:53:19.690Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.4299,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:53:19.691Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:53:19.699Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:53:19.715Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:53:19.727Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:53:19.730Z","event":"tenants.lookup.exact.ok","rid":null,"ms":13.1028,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:53:19.731Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:53:19.732Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0407,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:53:19.733Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:53:19.745Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:53:19.746Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.9452,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:53:19.747Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:53:19.751Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.0211,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:53:19.752Z","event":"tenancy.ok","rid":null,"ms":37,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:53:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.4778,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:53:19.758Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:53:19.765Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.5727,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:53:19.767Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:53:19.770Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.3099,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:53:19.771Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:53:19.780Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.6206,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:53:19.782Z","event":"tenancy.ok","rid":null,"ms":37,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:53:19.883Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:53:19.892Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:53:19.908Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.4526,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:53:19.910Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:53:19.912Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.0619,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:53:19.913Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:53:19.938Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:53:19.946Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.0799,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:53:19.947Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:53:19.955Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.1308,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:53:19.956Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:53:19.962Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.9821,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:53:19.963Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:53:19.990Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.7805,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:53:19.991Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:53:20.122Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:53:20.146Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.0051,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:53:20.147Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:53:20.165Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.762,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:53:20.166Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:54:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:54:19.629Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:54:19.650Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.3357,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:54:19.655Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:54:19.657Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1268,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:54:19.657Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:54:19.672Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:54:19.697Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:54:19.699Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:54:19.707Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.0025,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:54:19.708Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:54:19.712Z","event":"tenants.lookup.default.ok","rid":null,"ms":53.8316,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:54:19.717Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:54:19.731Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.7945,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:54:19.733Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:54:19.962Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:54:19.990Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.0399,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:54:19.991Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:54:20.010Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.8824,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:54:20.011Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:54:20.020Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:54:20.056Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.412,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:54:20.057Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:54:20.072Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:54:20.090Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:54:20.092Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.994,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:54:20.093Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:54:20.103Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.2639,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:54:20.104Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:54:20.132Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.5563,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:54:20.133Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:54:20.135Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.0127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:54:20.137Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:54:20.152Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:54:20.176Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.8919,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:54:20.177Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:54:20.184Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6086,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:54:20.185Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:54:20.212Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.6981,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:54:20.213Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:54:20.249Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:54:20.270Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.0434,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:54:20.271Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:54:20.292Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:54:20.310Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.6335,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:54:20.312Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:54:20.318Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:54:20.319Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:54:20.353Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5895,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:54:20.355Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T21:55:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:55:19.626Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:55:19.634Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.8023,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:55:19.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:55:19.672Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:55:19.674Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.1491,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:55:19.675Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:55:19.676Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.8547,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:55:19.677Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:55:19.705Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:55:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:55:19.711Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.3968,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:55:19.712Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:55:19.714Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.2358,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:55:19.715Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:55:19.732Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.4898,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:55:19.733Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:55:19.734Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.409,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:55:19.736Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:55:19.738Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.4801,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:55:19.740Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:55:19.755Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.2093,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:55:19.756Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:55:19.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.1921,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:55:19.763Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:55:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:55:19.801Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.0246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:55:19.802Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:55:19.809Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:55:19.814Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:55:19.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.8336,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:55:19.837Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:55:19.839Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.935,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:55:19.840Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:55:19.842Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.8963,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:55:19.843Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:55:19.871Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.5822,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:55:19.873Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:55:19.880Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.0562,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:55:19.884Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:55:19.946Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:55:19.971Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.7861,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:55:19.973Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:55:20.011Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.5662,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:55:20.012Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:55:20.023Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:55:20.050Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.4835,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:55:20.051Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:55:20.090Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.0133,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:55:20.091Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:56:19.579Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:56:19.615Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:56:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.2948,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:56:19.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:56:19.650Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.6285,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:56:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:56:19.682Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:56:19.687Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.489,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:56:19.689Z","event":"tenancy.ok","rid":null,"ms":110,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:56:19.699Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.2026,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:56:19.700Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:56:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:56:19.723Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.9724,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:56:19.724Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:56:19.752Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.3793,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:56:19.754Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:56:19.757Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9986,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:56:19.758Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:56:19.767Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:56:19.770Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:56:19.792Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:56:19.799Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.06,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:56:19.800Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:56:19.802Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.9148,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:56:19.803Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:56:19.810Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:56:19.812Z","event":"tenants.lookup.default.ok","rid":null,"ms":56.2922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:56:19.814Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:56:19.852Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.7271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:56:19.854Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:56:19.860Z","event":"tenants.lookup.default.ok","rid":null,"ms":55.6361,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:56:19.861Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:56:19.866Z","event":"tenants.lookup.exact.ok","rid":null,"ms":72.8522,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:56:19.867Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:56:19.868Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.3098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:56:19.868Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:56:19.912Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.3864,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:56:19.914Z","event":"tenancy.ok","rid":null,"ms":122,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:56:19.921Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.7602,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:56:19.922Z","event":"tenancy.ok","rid":null,"ms":112,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:56:20.003Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:56:20.023Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:56:20.032Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7583,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:56:20.033Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:56:20.079Z","event":"tenants.lookup.exact.ok","rid":null,"ms":55.5626,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:56:20.081Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:56:20.082Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.2829,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:56:20.083Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:56:20.127Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.9199,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:56:20.128Z","event":"tenancy.ok","rid":null,"ms":105,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:57:19.599Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:57:19.639Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:57:19.658Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.8066,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:57:19.659Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:57:19.661Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.2071,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:57:19.661Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:57:19.673Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:57:19.692Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3905,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:57:19.693Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:57:19.696Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0327,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:57:19.697Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:57:19.703Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.7591,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:57:19.703Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:57:19.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:57:19.737Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2768,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:57:19.738Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:57:19.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6574,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:57:19.751Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:57:19.756Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:57:19.766Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:57:19.774Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.3176,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:57:19.775Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:57:19.777Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.1133,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:57:19.778Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:57:19.786Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.6902,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:57:19.787Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:57:19.792Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.5226,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:57:19.793Z","event":"tenancy.ok","rid":null,"ms":37,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:57:19.811Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.1814,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:57:19.813Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:57:19.830Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:57:19.833Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:57:19.852Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.4056,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:57:19.854Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:57:19.856Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.158,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:57:19.856Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:57:19.894Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.284,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:57:19.895Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:57:19.901Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2392,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:57:19.901Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:57:19.953Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:57:19.988Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.4991,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:57:19.989Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:57:20.001Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:57:20.007Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.0265,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:57:20.008Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:57:20.034Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.1843,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:57:20.035Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:57:20.053Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.4492,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:57:20.054Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:58:19.582Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:58:19.635Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:58:19.640Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.6524,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:58:19.641Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:58:19.683Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:58:19.685Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.7002,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:58:19.686Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:58:19.687Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.3541,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:58:19.688Z","event":"tenancy.ok","rid":null,"ms":106,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:58:19.714Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.7609,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:58:19.715Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:58:19.716Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.3169,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:58:19.717Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:58:19.728Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:58:19.731Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:58:19.748Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5546,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:58:19.749Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:58:19.761Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:58:19.764Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0807,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:58:19.766Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:58:19.769Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.1271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:58:19.770Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:58:19.792Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:58:19.794Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.1822,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:58:19.795Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:58:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:58:19.804Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:58:19.810Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.6913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:58:19.811Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:58:19.815Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.736,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:58:19.815Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:58:19.834Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0193,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:58:19.835Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:58:19.838Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0859,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:58:19.840Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:58:19.904Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:58:19.932Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.859,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:58:19.934Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:58:19.949Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.0045,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:58:19.950Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:58:20.036Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:58:20.074Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.4837,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:58:20.075Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:58:20.108Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5723,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:58:20.109Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:58:20.149Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:58:20.168Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.7354,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:58:20.169Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:58:20.195Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.6881,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:58:20.197Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:59:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:59:19.626Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:59:19.647Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.8858,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:59:19.648Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:59:19.667Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.3112,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:59:19.668Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:59:19.671Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:59:19.683Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.4692,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:59:19.684Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:59:19.689Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.1513,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:59:19.690Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:59:19.698Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.8691,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:59:19.699Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:59:19.713Z","event":"tenants.lookup.default.ok","rid":null,"ms":13.0841,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:59:19.714Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:59:19.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:59:19.732Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:59:19.747Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:59:19.763Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.3538,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:59:19.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:59:19.767Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.5555,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:59:19.768Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:59:19.776Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:59:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:59:19.790Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.8953,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:59:19.791Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:59:19.808Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.9487,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:59:19.809Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:59:19.815Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.6488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:59:19.816Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:59:19.821Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.9315,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:59:19.823Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:59:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.1361,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:59:19.826Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:59:19.828Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8746,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:59:19.831Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:59:19.868Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:59:19.869Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:59:19.876Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.2213,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:59:19.877Z","event":"tenancy.ok","rid":null,"ms":91,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:59:20.002Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:59:20.031Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T21:59:20.068Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.2909,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:59:20.069Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:59:20.071Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.3392,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T21:59:20.072Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T21:59:20.093Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.1075,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:59:20.094Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T21:59:20.099Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.4849,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T21:59:20.100Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
Running daily log cleanup...
Cleaned up old logs from ai_interaction_logs
Cleaned up old logs from user_behavior_logs
Cleaned up old logs from ai_performance_metrics
Cleaned up old logs from search_analytics
Cleaned up old logs from system_monitoring
Log cleanup completed: { success: true, message: 'Log cleanup completed' }
{"t":"2026-03-03T22:00:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:00:19.629Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:00:19.634Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.4909,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:00:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:00:19.654Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.3131,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:00:19.655Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:00:19.659Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.7341,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:00:19.660Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:00:19.689Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:00:19.695Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:00:19.696Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3215,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:00:19.697Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:00:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4655,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:00:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:00:19.722Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8276,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:00:19.724Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:00:19.728Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:00:19.737Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:00:19.748Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.6675,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:00:19.750Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:00:19.755Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.9024,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:00:19.756Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:00:19.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.8909,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:00:19.763Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:00:19.764Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.496,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:00:19.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:00:19.793Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:00:19.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:00:19.801Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.0286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:00:19.802Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:00:19.808Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.426,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:00:19.810Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:00:19.831Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.0877,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:00:19.832Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:00:19.834Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.0428,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:00:19.835Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:00:19.871Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3655,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:00:19.872Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:00:19.878Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.1206,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:00:19.880Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:00:19.986Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:00:20.010Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:00:20.014Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.8309,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:00:20.015Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:00:20.028Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.6452,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:00:20.029Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:00:20.033Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.7221,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:00:20.034Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:00:20.048Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.0151,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:00:20.049Z","event":"tenancy.ok","rid":null,"ms":39,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:01:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:01:19.637Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7857,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:01:19.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:01:19.643Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:01:19.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:01:19.676Z","event":"tenancy.ok","rid":null,"ms":87,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:01:19.683Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.5187,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:01:19.684Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:01:19.715Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.1994,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:01:19.717Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:01:19.737Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:01:19.754Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.6908,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:01:19.754Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:01:19.791Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.9513,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:01:19.792Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:01:19.800Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:01:19.838Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.8748,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:01:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:01:19.871Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.3694,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:01:19.871Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:01:19.965Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:01:19.989Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.842,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:01:19.990Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:01:19.997Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:01:20.006Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:01:20.010Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.1463,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:01:20.011Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:01:20.021Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.0561,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:01:20.021Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:01:20.029Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.8627,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:01:20.029Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:01:20.041Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.6934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:01:20.043Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:01:20.051Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.0471,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:01:20.052Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:01:20.126Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:01:20.134Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:01:20.174Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.8054,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:01:20.176Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:01:20.178Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.0478,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:01:20.179Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:01:20.188Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:01:20.215Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5572,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:01:20.216Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:01:20.221Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.2315,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:01:20.222Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:01:20.227Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.3563,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:01:20.228Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:01:20.254Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.1954,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:01:20.255Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:02:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:02:19.621Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:02:19.650Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.211,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:02:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:02:19.651Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.1025,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:02:19.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:02:19.687Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:02:19.699Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.589,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:02:19.701Z","event":"tenancy.ok","rid":null,"ms":112,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:02:19.712Z","event":"tenants.lookup.default.ok","rid":null,"ms":59.2754,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:02:19.714Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:02:19.724Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.7692,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:02:19.726Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:02:19.746Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:02:19.754Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.9474,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:02:19.755Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:02:19.767Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:02:19.770Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:02:19.788Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.6238,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:02:19.789Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:02:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:02:19.809Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.4559,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:02:19.810Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:02:19.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.6153,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:02:19.813Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:02:19.822Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:02:19.828Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.3789,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:02:19.829Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:02:19.831Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.4913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:02:19.832Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:02:19.838Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.2344,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:02:19.840Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:02:19.848Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3088,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:02:19.851Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:02:19.873Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.5945,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:02:19.875Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:02:19.880Z","event":"tenants.lookup.exact.ok","rid":null,"ms":56.9141,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:02:19.882Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:02:19.931Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.8774,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:02:19.933Z","event":"tenancy.ok","rid":null,"ms":111,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:02:20.034Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:02:20.041Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:02:20.070Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4199,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:02:20.072Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:02:20.074Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.4648,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:02:20.075Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:02:20.090Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.0429,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:02:20.091Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:02:20.095Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.2946,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:02:20.095Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:03:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:03:19.622Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:03:19.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.695,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:03:19.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:03:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.6605,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:03:19.643Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:03:19.676Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:03:19.679Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.1286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:03:19.680Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:03:19.688Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.0706,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:03:19.690Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:03:19.711Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.7801,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:03:19.712Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:03:19.721Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:03:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:03:19.730Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.0533,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:03:19.731Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:03:19.750Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8986,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:03:19.751Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:03:19.756Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:03:19.758Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:03:19.759Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:03:19.771Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9253,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:03:19.772Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:03:19.778Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.8456,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:03:19.779Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:03:19.781Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.3685,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:03:19.782Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:03:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.025,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:03:19.802Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:03:19.826Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:03:19.833Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:03:19.852Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6434,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:03:19.854Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:03:19.857Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.6406,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:03:19.858Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:03:19.891Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9004,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:03:19.892Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:03:19.898Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.752,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:03:19.899Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:03:19.917Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:03:19.931Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.3965,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:03:19.932Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:03:19.953Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.9469,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:03:19.954Z","event":"tenancy.ok","rid":null,"ms":37,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:03:20.040Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:03:20.071Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9681,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:03:20.073Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:03:20.089Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.9623,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:03:20.091Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:04:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:04:19.636Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5113,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:04:19.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:04:19.646Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:04:19.671Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.8993,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:04:19.672Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:04:19.678Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6703,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:04:19.680Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:04:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:04:19.720Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:04:19.722Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.8422,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:04:19.723Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:04:19.724Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.1387,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:04:19.725Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:04:19.733Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:04:19.756Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.0643,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:04:19.757Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:04:19.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.7854,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:04:19.761Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:04:19.766Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.4034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:04:19.767Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:04:19.769Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:04:19.790Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:04:19.792Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.0676,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:04:19.794Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:04:19.800Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2049,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:04:19.801Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:04:19.802Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.2707,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:04:19.803Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:04:19.811Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.7135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:04:19.812Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:04:19.816Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.6046,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:04:19.818Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:04:19.831Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.6786,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:04:19.832Z","event":"tenancy.ok","rid":null,"ms":42,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:04:19.872Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:04:19.897Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.5757,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:04:19.898Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:04:19.931Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5861,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:04:19.932Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:04:19.954Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:04:19.979Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.3098,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:04:19.981Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:04:20.010Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:04:20.012Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.47,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:04:20.013Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:04:20.032Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.3192,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:04:20.033Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:04:20.051Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.5565,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:04:20.054Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T22:05:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:05:19.627Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:05:19.637Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:05:19.639Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:05:19.656Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2114,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:05:19.658Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:05:19.659Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.3158,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:05:19.660Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:05:19.676Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.4411,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:05:19.677Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:05:19.685Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:05:19.715Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:05:19.717Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.1856,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:05:19.719Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:05:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:05:19.734Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:05:19.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.3767,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:05:19.760Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:05:19.768Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.9861,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:05:19.769Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:05:19.771Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.5992,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:05:19.772Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:05:19.774Z","event":"tenants.lookup.exact.ok","rid":null,"ms":58.8649,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:05:19.775Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:05:19.793Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:05:19.797Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.2829,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:05:19.799Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:05:19.806Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6691,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:05:19.807Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:05:19.815Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.0633,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:05:19.816Z","event":"tenancy.ok","rid":null,"ms":94,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:05:19.826Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.3529,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:05:19.828Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:05:19.830Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:05:19.861Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.0403,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:05:19.862Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:05:19.871Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.2193,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:05:19.872Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:05:19.896Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.9642,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:05:19.897Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:05:20.020Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:05:20.046Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:05:20.058Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.7484,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:05:20.059Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:05:20.075Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.919,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:05:20.076Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:05:20.083Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.2076,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:05:20.084Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:05:20.116Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.2635,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:05:20.117Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:06:19.584Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:06:19.636Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:06:19.639Z","event":"tenants.lookup.exact.ok","rid":null,"ms":52.5033,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:06:19.641Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:06:19.670Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:06:19.689Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.8096,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:06:19.689Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:06:19.690Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.3034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:06:19.691Z","event":"tenancy.ok","rid":null,"ms":107,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:06:19.698Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.206,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:06:19.699Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:06:19.717Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:06:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:06:19.730Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.6811,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:06:19.731Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:06:19.739Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.923,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:06:19.740Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:06:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:06:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:06:19.789Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:06:19.791Z","event":"tenants.lookup.exact.ok","rid":null,"ms":65.4475,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:06:19.792Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:06:19.794Z","event":"tenants.lookup.exact.ok","rid":null,"ms":76.0655,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:06:19.796Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:06:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.7072,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:06:19.827Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:06:19.829Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.6035,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:06:19.832Z","event":"tenancy.ok","rid":null,"ms":108,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:06:19.839Z","event":"tenants.lookup.exact.ok","rid":null,"ms":55.1813,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:06:19.840Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:06:19.842Z","event":"tenants.lookup.exact.ok","rid":null,"ms":51.5096,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:06:19.843Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:06:19.845Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.2463,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:06:19.846Z","event":"tenancy.ok","rid":null,"ms":129,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:06:19.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.5307,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:06:19.867Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:06:19.873Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.1593,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:06:19.875Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:06:19.881Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.6153,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:06:19.882Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:06:19.952Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:06:19.968Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:06:20.000Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.1026,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:06:20.001Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:06:20.002Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.8134,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:06:20.004Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:06:20.060Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.4365,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:06:20.061Z","event":"tenancy.ok","rid":null,"ms":109,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:06:20.069Z","event":"tenants.lookup.default.ok","rid":null,"ms":64.7825,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:06:20.071Z","event":"tenancy.ok","rid":null,"ms":103,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:07:19.581Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:07:19.622Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:07:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.3604,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:07:19.642Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:07:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.6605,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:07:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:07:19.678Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5963,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:07:19.679Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:07:19.688Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.3875,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:07:19.690Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:07:19.707Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:07:19.733Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.2073,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:07:19.734Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:07:19.752Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.162,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:07:19.753Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:07:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:07:19.809Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:07:19.812Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.0231,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:07:19.813Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:07:19.820Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:07:19.838Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.0571,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:07:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:07:19.841Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.5313,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:07:19.842Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:07:19.844Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.1354,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:07:19.846Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:07:19.868Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:07:19.872Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.6686,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:07:19.873Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:07:19.881Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.1534,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:07:19.883Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:07:19.898Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.186,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:07:19.899Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:07:19.913Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:07:19.938Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.51,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:07:19.939Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:07:19.947Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.1135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:07:19.948Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:07:19.977Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.9185,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:07:19.978Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:07:20.063Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:07:20.097Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.2645,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:07:20.098Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:07:20.114Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:07:20.149Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.3473,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:07:20.150Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:07:20.152Z","event":"tenants.lookup.default.ok","rid":null,"ms":52.8401,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:07:20.153Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:07:20.175Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.0068,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:07:20.177Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:08:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:08:19.620Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:08:19.623Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.6241,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:08:19.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:08:19.637Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.2863,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:08:19.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:08:19.643Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.7534,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:08:19.645Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:08:19.670Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:08:19.673Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.9631,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:08:19.675Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:08:19.692Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.2004,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:08:19.693Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:08:19.696Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:08:19.712Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.6366,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:08:19.713Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:08:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.8875,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:08:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:08:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:08:19.746Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:08:19.753Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.8934,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:08:19.754Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:08:19.760Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1116,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:08:19.760Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:08:19.772Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.6,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:08:19.773Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:08:19.778Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.3662,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:08:19.779Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:08:19.792Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.708,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:08:19.794Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:08:19.820Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:08:19.837Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.192,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:08:19.838Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:08:19.857Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.2971,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:08:19.859Z","event":"tenancy.ok","rid":null,"ms":39,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:08:19.865Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:08:19.892Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.114,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:08:19.893Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:08:19.928Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:08:19.947Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:08:19.952Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.9619,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:08:19.953Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:08:19.978Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.9003,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:08:19.979Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:08:19.981Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.0328,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:08:19.982Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:08:20.012Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7581,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:08:20.013Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:08:20.019Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.2073,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:08:20.020Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:09:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:09:19.612Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:09:19.623Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.5231,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:09:19.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:09:19.628Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.6465,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:09:19.629Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:09:19.662Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.252,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:09:19.663Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:09:19.667Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.1345,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:09:19.667Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:09:19.695Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:09:19.718Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.4961,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:09:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:09:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:09:19.731Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:09:19.738Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:09:19.752Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.292,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:09:19.754Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:09:19.762Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.3835,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:09:19.763Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:09:19.764Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5083,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:09:19.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:09:19.766Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.6565,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:09:19.767Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:09:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9052,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:09:19.801Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:09:19.807Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2213,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:09:19.808Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:09:19.813Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.6728,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:09:19.815Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:09:19.823Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:09:19.837Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:09:19.839Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.1643,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:09:19.840Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:09:19.874Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.3975,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:09:19.875Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:09:19.881Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.1269,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:09:19.883Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:09:19.894Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:09:19.913Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.2487,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:09:19.914Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:09:19.921Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.5596,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:09:19.922Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:09:19.953Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.0129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:09:19.955Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:09:20.059Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:09:20.074Z","event":"tenants.lookup.exact.ok","rid":null,"ms":13.7634,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:09:20.076Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:09:20.094Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:09:20.095Z","event":"tenancy.ok","rid":null,"ms":36,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T22:10:19.579Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:10:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1275,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:10:19.625Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:10:19.628Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:10:19.658Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.1915,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:10:19.658Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:10:19.659Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:10:19.659Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:10:19.686Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.1581,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:10:19.688Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:10:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:10:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":11.7171,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:10:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:10:19.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:10:19.742Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:10:19.758Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.3092,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:10:19.759Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:10:19.766Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.8007,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:10:19.767Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:10:19.769Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.7921,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:10:19.770Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:10:19.787Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:10:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:10:19.809Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:10:19.813Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.5958,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:10:19.814Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:10:19.821Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.2632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:10:19.823Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:10:19.829Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.4957,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:10:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:10:19.832Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.8782,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:10:19.834Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:10:19.838Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.4249,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:10:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:10:19.858Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.3507,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:10:19.859Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:10:19.865Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.4384,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:10:19.867Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:10:19.873Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.204,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:10:19.874Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:10:19.971Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:10:19.994Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:10:20.023Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.979,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:10:20.024Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:10:20.026Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.9913,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:10:20.026Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:10:20.058Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6834,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:10:20.059Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:10:20.065Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.1497,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:10:20.066Z","event":"tenancy.ok","rid":null,"ms":95,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:11:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:11:19.625Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.453,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:11:19.627Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:11:19.633Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:11:19.659Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.928,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:11:19.660Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:11:19.664Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.33,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:11:19.665Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:11:19.697Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:11:19.699Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.371,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:11:19.700Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:11:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.3158,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:11:19.722Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:11:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:11:19.735Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:11:19.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4429,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:11:19.760Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:11:19.766Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.6546,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:11:19.767Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:11:19.768Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.3769,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:11:19.769Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:11:19.798Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.5764,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:11:19.799Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:11:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7523,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:11:19.803Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:11:19.808Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:11:19.845Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:11:19.848Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.4315,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:11:19.849Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:11:19.884Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.9697,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:11:19.886Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:11:19.893Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.5701,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:11:19.894Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:11:19.906Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:11:19.915Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:11:19.923Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.217,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:11:19.924Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:11:19.929Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.7491,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:11:19.929Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:11:19.959Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.6163,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:11:19.960Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:11:19.967Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.6593,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:11:19.968Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:11:19.998Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.3097,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:11:19.999Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:11:20.056Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:11:20.083Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1292,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:11:20.084Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:11:20.119Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7739,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:11:20.121Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:12:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:12:19.641Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.3132,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:12:19.642Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:12:19.653Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:12:19.679Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.9722,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:12:19.680Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:12:19.684Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1516,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:12:19.684Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:12:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:12:19.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:12:19.720Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.3553,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:12:19.721Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:12:19.722Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.2334,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:12:19.723Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:12:19.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:12:19.742Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.4652,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:12:19.743Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:12:19.747Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.5298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:12:19.748Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:12:19.771Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:12:19.779Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.74,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:12:19.780Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:12:19.786Z","event":"tenants.lookup.exact.ok","rid":null,"ms":45.137,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:12:19.787Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:12:19.791Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:12:19.799Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2121,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:12:19.800Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:12:19.804Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.2959,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:12:19.805Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:12:19.810Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:12:19.812Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.0325,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:12:19.812Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:12:19.840Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.6812,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:12:19.842Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:12:19.849Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.8488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:12:19.850Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:12:19.852Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5643,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:12:19.852Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:12:19.884Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.8209,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:12:19.885Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:12:19.917Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:12:19.942Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.8073,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:12:19.943Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:12:19.960Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.2935,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:12:19.961Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:12:20.038Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:12:20.079Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.9977,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:12:20.080Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:12:20.118Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.7328,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:12:20.119Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:13:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:13:19.625Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.3251,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:13:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:13:19.633Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:13:19.660Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.0733,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:13:19.661Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:13:19.663Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1434,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:13:19.665Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:13:19.671Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:13:19.702Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:13:19.706Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.6752,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:13:19.708Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:13:19.714Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.2924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:13:19.715Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:13:19.744Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:13:19.745Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.0587,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:13:19.746Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:13:19.749Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.0749,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:13:19.750Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:13:19.756Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:13:19.775Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.2106,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:13:19.775Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:13:19.786Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:13:19.789Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.7291,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:13:19.790Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:13:19.794Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.8421,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:13:19.796Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:13:19.801Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:13:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.9441,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:13:19.804Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:13:19.814Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.1088,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:13:19.815Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:13:19.824Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.6013,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:13:19.825Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:13:19.832Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0488,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:13:19.834Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:13:19.840Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.2806,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:13:19.841Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:13:19.857Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5109,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:13:19.859Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:13:19.898Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:13:19.917Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:13:19.934Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.291,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:13:19.934Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:13:19.941Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.5174,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:13:19.941Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:13:19.957Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.8914,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:13:19.958Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:13:19.962Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.5684,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:13:19.963Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:14:19.607Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:14:19.657Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:14:19.666Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.2305,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:14:19.667Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:14:19.691Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:14:19.704Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.7445,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:14:19.705Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:14:19.707Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.1079,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:14:19.708Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:14:19.711Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:14:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.7525,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:14:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:14:19.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.4289,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:14:19.727Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:14:19.729Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.0288,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:14:19.730Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:14:19.738Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:14:19.762Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.8836,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:14:19.763Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:14:19.768Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.028,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:14:19.770Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:14:19.775Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.9885,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:14:19.776Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:14:19.778Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:14:19.800Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.2828,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:14:19.800Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:14:19.802Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.5211,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:14:19.803Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:14:19.812Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:14:19.840Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.4134,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:14:19.841Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:14:19.846Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.2739,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:14:19.847Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:14:19.848Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:14:19.850Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:14:19.885Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.5127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:14:19.887Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:14:19.888Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.0557,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:14:19.889Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:14:19.896Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.407,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:14:19.898Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:14:19.922Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:14:19.924Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.4689,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:14:19.925Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:14:19.931Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.7665,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:14:19.932Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:14:19.962Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.2445,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:14:19.976Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:14:20.002Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.8825,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:14:20.003Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T22:15:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:15:19.621Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.6317,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:15:19.623Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:15:19.646Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:15:19.668Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.3039,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:15:19.669Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:15:19.670Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.0806,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:15:19.671Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:15:19.681Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:15:19.695Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.9888,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:15:19.696Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:15:19.706Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.2158,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:15:19.707Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:15:19.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:15:19.743Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.6635,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:15:19.744Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:15:19.753Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:15:19.776Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:15:19.779Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.7095,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:15:19.780Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:15:19.781Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.1459,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:15:19.783Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:15:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:15:19.795Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.7163,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:15:19.797Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:15:19.800Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.3575,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:15:19.801Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:15:19.807Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.1343,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:15:19.808Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:15:19.816Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:15:19.820Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9438,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:15:19.821Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:15:19.822Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.7763,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:15:19.824Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:15:19.835Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.6328,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:15:19.836Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:15:19.842Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.1025,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:15:19.844Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:15:19.855Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.056,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:15:19.856Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:15:19.901Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:15:19.915Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.3882,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:15:19.916Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:15:19.928Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:15:19.937Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.0769,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:15:19.938Z","event":"tenancy.ok","rid":null,"ms":37,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:15:19.956Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.531,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:15:19.956Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:15:19.981Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.5968,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:15:19.982Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:16:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:16:19.627Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.0112,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:16:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:16:19.643Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:16:19.662Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.4954,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:16:19.662Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:16:19.666Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.0831,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:16:19.667Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:16:19.674Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:16:19.694Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:16:19.707Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5895,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:16:19.708Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:16:19.709Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.5854,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:16:19.710Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:16:19.724Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:16:19.727Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.1265,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:16:19.728Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:16:19.730Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.9602,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:16:19.731Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:16:19.745Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.8839,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:16:19.746Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:16:19.755Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.8697,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:16:19.757Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:16:19.763Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.0258,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:16:19.764Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:16:19.805Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:16:19.829Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:16:19.846Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.1147,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:16:19.848Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:16:19.851Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.8639,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:16:19.853Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:16:19.860Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:16:19.863Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:16:19.875Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.3528,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:16:19.876Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:16:19.883Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.4025,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:16:19.884Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:16:19.891Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.8711,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:16:19.893Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:16:19.895Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.5692,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:16:19.896Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:16:19.927Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:16:19.928Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6465,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:16:19.929Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:16:19.935Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.2924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:16:19.935Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:16:19.957Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.5801,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:16:19.959Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:16:19.995Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.1651,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:16:19.996Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:17:19.585Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:17:19.628Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:17:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.7918,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:17:19.638Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:17:19.668Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.5953,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:17:19.669Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:17:19.670Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.0741,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:17:19.670Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:17:19.690Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:17:19.701Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:17:19.714Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.7664,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:17:19.715Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:17:19.716Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.1269,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:17:19.717Z","event":"tenancy.ok","rid":null,"ms":89,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:17:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:17:19.742Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.0142,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:17:19.743Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:17:19.744Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.7938,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:17:19.746Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:17:19.752Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.2531,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:17:19.754Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:17:19.758Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:17:19.777Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:17:19.787Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2849,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:17:19.789Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:17:19.796Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.3525,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:17:19.797Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:17:19.799Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.2111,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:17:19.800Z","event":"tenancy.ok","rid":null,"ms":74,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:17:19.807Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:17:19.809Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.9383,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:17:19.811Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:17:19.823Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.7893,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:17:19.824Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:17:19.826Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.0417,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:17:19.827Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:17:19.842Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.2399,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:17:19.843Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:17:19.849Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.106,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:17:19.852Z","event":"tenancy.ok","rid":null,"ms":45,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:17:19.891Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:17:19.914Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:17:19.922Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.3882,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:17:19.924Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:17:19.942Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7687,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:17:19.943Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:17:19.944Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.3658,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:17:19.945Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:17:19.988Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.4489,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:17:19.990Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:18:19.598Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:18:19.649Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:18:19.655Z","event":"tenants.lookup.exact.ok","rid":null,"ms":42.4542,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:18:19.656Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:18:19.684Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:18:19.690Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.6574,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:18:19.691Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:18:19.697Z","event":"tenants.lookup.exact.ok","rid":null,"ms":46.7474,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:18:19.698Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:18:19.730Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:18:19.732Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.4492,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:18:19.733Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:18:19.739Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.2124,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:18:19.740Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:18:19.742Z","event":"tenants.lookup.exact.ok","rid":null,"ms":10.7731,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:18:19.744Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:18:19.748Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:18:19.763Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.9923,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:18:19.765Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:18:19.771Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.1186,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:18:19.772Z","event":"tenancy.ok","rid":null,"ms":42,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:18:19.778Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.502,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:18:19.779Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:18:19.783Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:18:19.802Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.489,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:18:19.803Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:18:19.805Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.4958,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:18:19.806Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:18:19.839Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.0318,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:18:19.840Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:18:19.875Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:18:19.893Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:18:19.897Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.1565,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:18:19.898Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:18:19.902Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:18:19.917Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.2801,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:18:19.919Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:18:19.922Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.5624,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:18:19.923Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:18:19.925Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.1922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:18:19.926Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:18:19.937Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.6891,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:18:19.938Z","event":"tenancy.ok","rid":null,"ms":36,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:18:19.943Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.3564,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:18:19.948Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:18:20.034Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:18:20.057Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.665,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:18:20.058Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:18:20.079Z","event":"tenants.lookup.default.ok","rid":null,"ms":20.4605,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:18:20.081Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:19:19.586Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:19:19.624Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.4808,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:19:19.626Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:19:19.630Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:19:19.644Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.5872,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:19:19.645Z","event":"tenancy.ok","rid":null,"ms":59,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:19:19.662Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.3384,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:19:19.664Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:19:19.682Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.1206,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:19:19.683Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:19:19.687Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:19:19.704Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:19:19.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:19:19.726Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.3477,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:19:19.727Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:19:19.729Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.3946,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:19:19.729Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:19:19.739Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:19:19.757Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.8168,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:19:19.758Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:19:19.763Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.2051,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:19:19.764Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:19:19.772Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8374,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:19:19.772Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:19:19.774Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.6637,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:19:19.775Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:19:19.779Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.8135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:19:19.780Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:19:19.795Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:19:19.804Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6937,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:19:19.805Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:19:19.817Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.4805,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:19:19.819Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:19:19.842Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.3481,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:19:19.843Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:19:19.871Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:19:19.882Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:19:19.898Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.3814,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:19:19.899Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:19:19.907Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.9512,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:19:19.908Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:19:19.914Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:19:19.917Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.0169,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:19:19.918Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:19:19.939Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6627,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:19:19.940Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:19:19.945Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.4431,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:19:19.946Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:19:19.987Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.2268,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:19:19.989Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T22:20:19.591Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:20:19.627Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:20:19.643Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.1894,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:20:19.644Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:20:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.8846,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:20:19.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:20:19.662Z","event":"tenants.lookup.default.ok","rid":null,"ms":11.1127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:20:19.663Z","event":"tenancy.ok","rid":null,"ms":36,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:20:19.668Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.622,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:20:19.669Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:20:19.707Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:20:19.719Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:20:19.722Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:20:19.732Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:20:19.742Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.9139,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:20:19.744Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:20:19.745Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.7764,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:20:19.746Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:20:19.747Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8087,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:20:19.748Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:20:19.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.1899,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:20:19.760Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:20:19.768Z","event":"tenants.lookup.exact.ok","rid":null,"ms":34.5529,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:20:19.770Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:20:19.771Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.0948,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:20:19.772Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:20:19.778Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.919,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:20:19.779Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:20:19.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:20:19.803Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.5486,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:20:19.804Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:20:19.818Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.7688,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:20:19.819Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:20:19.837Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.4071,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:20:19.839Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:20:19.860Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:20:19.878Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.572,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:20:19.879Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:20:19.886Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:20:19.899Z","event":"tenants.lookup.exact.ok","rid":null,"ms":11.7877,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:20:19.900Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:20:19.902Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.6447,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:20:19.903Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:20:19.912Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:20:19.918Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.5596,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:20:19.920Z","event":"tenancy.ok","rid":null,"ms":34,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:20:19.943Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9242,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:20:19.944Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:20:19.982Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.3236,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:20:19.983Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:21:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:21:19.629Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:21:19.644Z","event":"tenants.lookup.exact.ok","rid":null,"ms":41.6921,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:21:19.645Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:21:19.653Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.1114,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:21:19.654Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:21:19.684Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.906,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:21:19.686Z","event":"tenancy.ok","rid":null,"ms":99,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:21:19.696Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.3233,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:21:19.698Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:21:19.714Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:21:19.739Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.3682,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:21:19.740Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:21:19.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.5463,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:21:19.760Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:21:19.774Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:21:19.794Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:21:19.806Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:21:19.810Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:21:19.824Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:21:19.826Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.7514,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:21:19.827Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:21:19.829Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.2124,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:21:19.829Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:21:19.846Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.8608,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:21:19.848Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:21:19.850Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.4669,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:21:19.851Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:21:19.873Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.1616,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:21:19.873Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:21:19.882Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6946,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:21:19.883Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:21:19.889Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.9486,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:21:19.891Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:21:19.897Z","event":"tenants.lookup.default.ok","rid":null,"ms":69.0932,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:21:19.898Z","event":"tenancy.ok","rid":null,"ms":124,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:21:19.905Z","event":"tenants.lookup.default.ok","rid":null,"ms":75.0964,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:21:19.907Z","event":"tenancy.ok","rid":null,"ms":113,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:21:19.915Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.6665,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:21:19.917Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:21:19.973Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:21:19.988Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:21:20.004Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9206,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:21:20.006Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:21:20.022Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.1297,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:21:20.023Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:21:20.030Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.7687,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:21:20.031Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:21:20.063Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.3924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:21:20.064Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:22:19.593Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:22:19.632Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:22:19.634Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7245,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:22:19.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:22:19.670Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.7906,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:22:19.671Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:22:19.672Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.5502,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:22:19.673Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:22:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:22:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:22:19.709Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.2767,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:22:19.711Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:22:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0034,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:22:19.720Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:22:19.739Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.0663,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:22:19.740Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:22:19.744Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:22:19.746Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.7874,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:22:19.747Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:22:19.759Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.5641,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:22:19.760Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:22:19.764Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.0518,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:22:19.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:22:19.784Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.8795,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:22:19.785Z","event":"tenancy.ok","rid":null,"ms":41,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:22:19.833Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:22:19.856Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:22:19.858Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:22:19.861Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.1523,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:22:19.862Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:22:19.868Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:22:19.883Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.5667,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:22:19.884Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:22:19.886Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.334,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:22:19.887Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:22:19.892Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8771,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:22:19.893Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:22:19.894Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.3426,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:22:19.895Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:22:19.920Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.3631,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:22:19.921Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:22:19.927Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6362,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:22:19.928Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:22:19.934Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.2823,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:22:19.936Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:22:19.995Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:22:20.019Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.5246,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:22:20.020Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:22:20.039Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.3472,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:22:20.041Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:23:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:23:19.631Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:23:19.635Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.2518,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:23:19.636Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:23:19.664Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.1824,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:23:19.665Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:23:19.669Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.1551,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:23:19.669Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:23:19.704Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:23:19.707Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.973,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:23:19.708Z","event":"tenancy.ok","rid":null,"ms":77,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:23:19.739Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.3326,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:23:19.740Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:23:19.747Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:23:19.760Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.618,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:23:19.761Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:23:19.769Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:23:19.771Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.8259,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:23:19.772Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:23:19.798Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:23:19.802Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:23:19.804Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.4769,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:23:19.805Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:23:19.809Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.2914,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:23:19.810Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:23:19.818Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.3408,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:23:19.820Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:23:19.821Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.8092,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:23:19.822Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:23:19.824Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9184,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:23:19.825Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:23:19.839Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.2282,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:23:19.841Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:23:19.853Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:23:19.857Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.9139,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:23:19.858Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:23:19.885Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.1836,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:23:19.886Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:23:19.909Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:23:19.927Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:23:19.943Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.3124,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:23:19.944Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:23:19.945Z","event":"tenants.lookup.default.ok","rid":null,"ms":58.0229,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:23:19.946Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:23:19.951Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.545,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:23:19.951Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:23:19.980Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.1102,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:23:19.981Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:23:19.987Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.3876,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:23:19.989Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:24:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:24:19.625Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.191,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:24:19.628Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:24:19.635Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:24:19.671Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.7899,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:24:19.672Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:24:19.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":43.9413,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:24:19.675Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:24:19.685Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:24:19.710Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:24:19.711Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.4441,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:24:19.713Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:24:19.714Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.3972,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:24:19.716Z","event":"tenancy.ok","rid":null,"ms":81,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:24:19.726Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:24:19.739Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.8552,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:24:19.741Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:24:19.750Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.4719,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:24:19.751Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:24:19.753Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.0659,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:24:19.754Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:24:19.761Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.5744,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:24:19.762Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:24:19.780Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.5996,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:24:19.781Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:24:19.803Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:24:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.7123,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:24:19.826Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:24:19.839Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:24:19.852Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:24:19.860Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.086,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:24:19.861Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:24:19.867Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8939,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:24:19.868Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:24:19.870Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:24:19.872Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.0867,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:24:19.873Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:24:19.905Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.0242,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:24:19.906Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:24:19.911Z","event":"tenants.lookup.exact.ok","rid":null,"ms":39.8687,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:24:19.912Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:24:19.914Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.9044,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:24:19.915Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:24:19.932Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:24:19.958Z","event":"tenants.lookup.default.ok","rid":null,"ms":44.8484,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:24:19.960Z","event":"tenancy.ok","rid":null,"ms":90,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:24:19.966Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.9819,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:24:19.967Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:24:19.999Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.2879,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:24:20.001Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T22:25:19.588Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:25:19.628Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:25:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.8788,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:25:19.634Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:25:19.665Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.3585,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:25:19.666Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:25:19.669Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.2393,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:25:19.670Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:25:19.708Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:25:19.710Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.4069,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:25:19.712Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:25:19.735Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:25:19.740Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.8682,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:25:19.741Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:25:19.754Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:25:19.760Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.0219,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:25:19.761Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:25:19.766Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.7019,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:25:19.767Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:25:19.787Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.5686,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:25:19.788Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:25:19.795Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:25:19.799Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.1355,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:25:19.800Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:25:19.809Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:25:19.821Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.9309,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:25:19.823Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:25:19.829Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.7618,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:25:19.830Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:25:19.834Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:25:19.837Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.7395,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:25:19.839Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:25:19.873Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.2329,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:25:19.874Z","event":"tenancy.ok","rid":null,"ms":79,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:25:19.880Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.519,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:25:19.881Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:25:19.883Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.3611,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:25:19.884Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:25:19.917Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.4477,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:25:19.919Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:25:19.940Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:25:19.956Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:25:19.973Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.6396,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:25:19.974Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:25:19.989Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.7766,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:25:19.990Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:25:19.999Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.1074,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:25:20.001Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:25:20.021Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.6101,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:25:20.022Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:26:19.581Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:26:19.628Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:26:19.650Z","event":"tenants.lookup.exact.ok","rid":null,"ms":53.0258,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:26:19.652Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:26:19.671Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:26:19.680Z","event":"tenants.lookup.exact.ok","rid":null,"ms":50.3732,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:26:19.680Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:26:19.682Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.0379,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:26:19.682Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:26:19.712Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:26:19.728Z","event":"tenants.lookup.exact.ok","rid":null,"ms":55.9549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:26:19.729Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:26:19.731Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.073,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:26:19.732Z","event":"tenancy.ok","rid":null,"ms":104,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:26:19.740Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:26:19.751Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.1013,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:26:19.752Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:26:19.754Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.303,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:26:19.755Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:26:19.773Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7432,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:26:19.774Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:26:19.782Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.5719,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:26:19.784Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:26:19.797Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:26:19.806Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:26:19.809Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.9924,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:26:19.810Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:26:19.832Z","event":"tenants.lookup.exact.ok","rid":null,"ms":32.4289,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:26:19.834Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:26:19.842Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:26:19.851Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.6758,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:26:19.853Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:26:19.868Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.1786,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:26:19.871Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:26:19.872Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.7317,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:26:19.873Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:26:19.880Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:26:19.900Z","event":"tenants.lookup.default.ok","rid":null,"ms":46.6834,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:26:19.902Z","event":"tenancy.ok","rid":null,"ms":96,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:26:19.911Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.1911,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:26:19.912Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:26:19.918Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.381,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:26:19.919Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:26:19.924Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:26:19.947Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.0079,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:26:19.948Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:26:19.956Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.2183,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:26:19.959Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:26:19.988Z","event":"tenants.lookup.default.ok","rid":null,"ms":26.8342,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:26:19.989Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:27:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:27:19.645Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:27:19.653Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.5348,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:27:19.653Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:27:19.674Z","event":"tenants.lookup.default.ok","rid":null,"ms":19.5879,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:27:19.674Z","event":"tenancy.ok","rid":null,"ms":84,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:27:19.681Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:27:19.683Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.2342,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:27:19.684Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:27:19.719Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:27:19.729Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:27:19.731Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.9306,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:27:19.734Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:27:19.736Z","event":"tenants.lookup.default.ok","rid":null,"ms":50.3151,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:27:19.737Z","event":"tenancy.ok","rid":null,"ms":92,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:27:19.764Z","event":"tenants.lookup.exact.ok","rid":null,"ms":43.659,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:27:19.766Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:27:19.768Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6883,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:27:19.769Z","event":"tenancy.ok","rid":null,"ms":88,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:27:19.775Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.1695,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:27:19.776Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:27:19.797Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:27:19.806Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:27:19.808Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.3556,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:27:19.809Z","event":"tenancy.ok","rid":null,"ms":80,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:27:19.816Z","event":"tenants.lookup.default.ok","rid":null,"ms":48.6413,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:27:19.817Z","event":"tenancy.ok","rid":null,"ms":98,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:27:19.825Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.1125,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:27:19.827Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:27:19.830Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.632,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:27:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:27:19.850Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.4753,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:27:19.851Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:27:19.857Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.2092,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:27:19.859Z","event":"tenancy.ok","rid":null,"ms":53,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:27:19.905Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:27:19.940Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1647,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:27:19.941Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:27:19.944Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:27:19.972Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:27:19.979Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.1922,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:27:19.980Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:27:19.986Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.3865,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:27:19.987Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:27:20.028Z","event":"tenants.lookup.default.ok","rid":null,"ms":40.1493,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:27:20.029Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:27:20.037Z","event":"tenants.lookup.exact.ok","rid":null,"ms":64.1276,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:27:20.038Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:27:20.087Z","event":"tenants.lookup.default.ok","rid":null,"ms":47.7252,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:27:20.087Z","event":"tenancy.ok","rid":null,"ms":115,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:28:19.577Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:28:19.612Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.2254,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:28:19.614Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:28:19.617Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:28:19.646Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.6629,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:28:19.647Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:28:19.649Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.4812,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:28:19.650Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:28:19.673Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:28:19.689Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.2923,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:28:19.690Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:28:19.692Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.2863,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:28:19.692Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:28:19.698Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:28:19.708Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.7741,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:28:19.709Z","event":"tenancy.ok","rid":null,"ms":36,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:28:19.717Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.7211,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:28:19.718Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:28:19.748Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.6857,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:28:19.750Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:28:19.783Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:28:19.799Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:28:19.802Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.766,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:28:19.803Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:28:19.825Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:28:19.832Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8662,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:28:19.833Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:28:19.842Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.4827,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:28:19.843Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:28:19.845Z","event":"tenants.lookup.default.ok","rid":null,"ms":41.6321,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:28:19.847Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:28:19.861Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.9146,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:28:19.862Z","event":"tenancy.ok","rid":null,"ms":37,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:28:19.866Z","event":"tenants.lookup.default.ok","rid":null,"ms":32.6536,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:28:19.867Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:28:19.885Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:28:19.924Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.6927,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:28:19.925Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:28:19.941Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.6244,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:28:19.942Z","event":"tenancy.ok","rid":null,"ms":57,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:28:19.974Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:28:20.001Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.9889,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:28:20.003Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:28:20.007Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:28:20.023Z","event":"tenants.lookup.exact.ok","rid":null,"ms":14.4298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:28:20.024Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:28:20.025Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.6276,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:28:20.026Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:28:20.041Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.5705,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:28:20.043Z","event":"tenancy.ok","rid":null,"ms":36,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:29:19.594Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:29:19.633Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.4809,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:29:19.635Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:29:19.646Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:29:19.664Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.0364,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:29:19.666Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:29:19.673Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2813,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:29:19.675Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:29:19.694Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:29:19.707Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.2153,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:29:19.709Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:29:19.716Z","event":"tenants.lookup.exact.ok","rid":null,"ms":21.0747,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:29:19.717Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:29:19.728Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:29:19.748Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.682,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:29:19.749Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:29:19.754Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.2272,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:29:19.755Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:29:19.758Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:29:19.782Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.9512,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:29:19.783Z","event":"tenancy.ok","rid":null,"ms":55,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:29:19.789Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7176,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:29:19.790Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:29:19.793Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:29:19.797Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:29:19.822Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.586,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:29:19.823Z","event":"tenancy.ok","rid":null,"ms":65,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:29:19.828Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.7142,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:29:19.829Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:29:19.830Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.4833,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:29:19.831Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:29:19.834Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:29:19.864Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:29:19.867Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.8694,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:29:19.868Z","event":"tenancy.ok","rid":null,"ms":71,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:29:19.875Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.3517,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:29:19.876Z","event":"tenancy.ok","rid":null,"ms":83,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:29:19.884Z","event":"tenants.lookup.exact.ok","rid":null,"ms":49.2163,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:29:19.886Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:29:19.888Z","event":"tenants.lookup.exact.ok","rid":null,"ms":22.091,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:29:19.889Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:29:19.903Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.9127,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:29:19.904Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:29:19.912Z","event":"tenants.lookup.default.ok","rid":null,"ms":22.3242,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:29:19.913Z","event":"tenancy.ok","rid":null,"ms":49,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:29:20.116Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:29:20.142Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1152,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:29:20.144Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:29:20.166Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.1659,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:29:20.167Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T22:30:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:30:19.630Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:30:19.640Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.9589,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:30:19.641Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:30:19.670Z","event":"tenants.lookup.exact.ok","rid":null,"ms":38.4226,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:30:19.671Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:30:19.673Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.0549,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:30:19.675Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:30:19.686Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:30:19.710Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.4528,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:30:19.712Z","event":"tenancy.ok","rid":null,"ms":82,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:30:19.719Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.5281,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:30:19.722Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:30:19.747Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:30:19.754Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.7466,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:30:19.755Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:30:19.763Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:30:19.791Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:30:19.797Z","event":"tenants.lookup.exact.ok","rid":null,"ms":48.1629,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:30:19.799Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:30:19.800Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.5785,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:30:19.801Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:30:19.812Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:30:19.823Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:30:19.836Z","event":"tenants.lookup.exact.ok","rid":null,"ms":44.169,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:30:19.837Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:30:19.839Z","event":"tenants.lookup.default.ok","rid":null,"ms":39.041,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:30:19.840Z","event":"tenancy.ok","rid":null,"ms":93,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:30:19.847Z","event":"tenants.lookup.default.ok","rid":null,"ms":45.1129,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:30:19.848Z","event":"tenancy.ok","rid":null,"ms":85,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:30:19.854Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.656,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:30:19.855Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:30:19.857Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.1369,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:30:19.858Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:30:19.867Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0777,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:30:19.869Z","event":"tenancy.ok","rid":null,"ms":78,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:30:19.887Z","event":"tenants.lookup.default.ok","rid":null,"ms":30.754,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:30:19.888Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:30:19.893Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.9616,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:30:19.893Z","event":"tenancy.ok","rid":null,"ms":70,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:30:19.970Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:30:19.985Z","event":"tenants.lookup.exact.ok","rid":null,"ms":12.7574,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:30:19.986Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:30:20.011Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:30:20.012Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.3453,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:30:20.014Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:30:20.050Z","event":"tenants.lookup.exact.ok","rid":null,"ms":37.6375,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:30:20.051Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:30:20.082Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.7187,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:30:20.083Z","event":"tenancy.ok","rid":null,"ms":72,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:31:19.586Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:31:19.620Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:31:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.6244,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:31:19.633Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:31:19.652Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.1421,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:31:19.653Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:31:19.656Z","event":"tenants.lookup.exact.ok","rid":null,"ms":35.6249,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:31:19.657Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:31:19.678Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:31:19.688Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:31:19.691Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.7086,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:31:19.693Z","event":"tenancy.ok","rid":null,"ms":73,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:31:19.708Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.0816,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:31:19.709Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:31:19.711Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.8471,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:31:19.712Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:31:19.727Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:31:19.729Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.9646,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:31:19.730Z","event":"tenancy.ok","rid":null,"ms":42,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:31:19.737Z","event":"tenants.lookup.default.ok","rid":null,"ms":24.5423,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:31:19.738Z","event":"tenancy.ok","rid":null,"ms":60,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:31:19.768Z","event":"tenants.lookup.exact.ok","rid":null,"ms":40.1812,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:31:19.769Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:31:19.780Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:31:19.802Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:31:19.805Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:31:19.879Z","event":"tenants.lookup.default.ok","rid":null,"ms":108.6222,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:31:19.882Z","event":"tenancy.ok","rid":null,"ms":155,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:31:19.886Z","event":"tenants.lookup.exact.ok","rid":null,"ms":104.088,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:31:19.887Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:31:19.890Z","event":"tenants.lookup.exact.ok","rid":null,"ms":86.3662,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:31:19.891Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:31:19.893Z","event":"tenants.lookup.exact.ok","rid":null,"ms":86.3418,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:31:19.894Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:31:19.909Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:31:19.911Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.7755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:31:19.912Z","event":"tenancy.ok","rid":null,"ms":132,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:31:19.920Z","event":"tenants.lookup.default.ok","rid":null,"ms":25.9704,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:31:19.922Z","event":"tenancy.ok","rid":null,"ms":117,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:31:19.929Z","event":"tenants.lookup.default.ok","rid":null,"ms":36.8334,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:31:19.930Z","event":"tenancy.ok","rid":null,"ms":128,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:31:19.974Z","event":"tenants.lookup.exact.ok","rid":null,"ms":63.7568,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:31:19.975Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:31:19.984Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:31:20.009Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6026,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:31:20.010Z","event":"tenancy.ok","rid":null,"ms":101,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:31:20.016Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.7894,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:31:20.017Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:31:20.049Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.0094,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:31:20.051Z","event":"tenancy.ok","rid":null,"ms":67,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:32:19.590Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:32:19.630Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.4039,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:32:19.631Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:32:19.634Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:32:19.673Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:32:19.675Z","event":"tenants.lookup.default.ok","rid":null,"ms":42.5286,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:32:19.676Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:32:19.683Z","event":"tenants.lookup.exact.ok","rid":null,"ms":47.5291,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:32:19.686Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:32:19.705Z","event":"tenants.lookup.exact.ok","rid":null,"ms":30.8918,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:32:19.707Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:32:19.709Z","event":"tenants.lookup.default.ok","rid":null,"ms":21.6161,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:32:19.710Z","event":"tenancy.ok","rid":null,"ms":76,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:32:19.724Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.8446,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:32:19.725Z","event":"tenancy.ok","rid":null,"ms":52,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:32:19.735Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:32:19.754Z","event":"tenants.lookup.exact.ok","rid":null,"ms":15.8955,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:32:19.755Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:32:19.779Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:32:19.783Z","event":"tenants.lookup.default.ok","rid":null,"ms":27.8985,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:32:19.785Z","event":"tenancy.ok","rid":null,"ms":50,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:32:19.802Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:32:19.805Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2752,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:32:19.807Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:32:19.821Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:32:19.829Z","event":"tenants.lookup.exact.ok","rid":null,"ms":25.1599,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:32:19.830Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:32:19.831Z","event":"tenants.lookup.default.ok","rid":null,"ms":23.0802,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:32:19.833Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:32:19.843Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.8298,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:32:19.845Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:32:19.852Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.9755,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:32:19.853Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:32:19.862Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:32:19.878Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:32:19.883Z","event":"tenants.lookup.default.ok","rid":null,"ms":29.0186,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:32:19.884Z","event":"tenancy.ok","rid":null,"ms":63,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:32:19.890Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.8613,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:32:19.891Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:32:19.904Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.3082,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:32:19.905Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:32:19.908Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.953,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:32:19.909Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:32:19.924Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.9186,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:32:19.925Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:32:19.975Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:32:20.006Z","event":"tenants.lookup.exact.ok","rid":null,"ms":29.2346,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:32:20.007Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:32:20.023Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.6322,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:32:20.023Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:33:19.592Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:33:19.629Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:33:19.632Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2907,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:33:19.634Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:33:19.648Z","event":"tenants.lookup.exact.ok","rid":null,"ms":17.3381,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:33:19.649Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:33:19.650Z","event":"tenants.lookup.default.ok","rid":null,"ms":14.6911,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:33:19.651Z","event":"tenancy.ok","rid":null,"ms":58,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:33:19.683Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.6372,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:33:19.685Z","event":"tenancy.ok","rid":null,"ms":56,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:33:19.690Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:33:19.696Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:33:19.709Z","event":"tenants.lookup.exact.ok","rid":null,"ms":11.9491,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:33:19.710Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:33:19.711Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.6059,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:33:19.712Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:33:19.738Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:33:19.746Z","event":"tenants.lookup.default.ok","rid":null,"ms":34.9407,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:33:19.747Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:33:19.752Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.5242,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:33:19.752Z","event":"tenancy.ok","rid":null,"ms":62,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:33:19.764Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.2382,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:33:19.765Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:33:19.778Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:33:19.783Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.1329,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:33:19.784Z","event":"tenancy.ok","rid":null,"ms":46,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:33:19.790Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:33:19.804Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.4271,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:33:19.805Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:33:19.810Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.2052,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:33:19.810Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:33:19.824Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.2521,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:33:19.825Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:33:19.830Z","event":"tenants.lookup.default.ok","rid":null,"ms":18.3288,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:33:19.830Z","event":"tenancy.ok","rid":null,"ms":40,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:33:19.839Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:33:19.871Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.7135,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:33:19.872Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:33:19.886Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:33:19.900Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:33:19.904Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.5649,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:33:19.905Z","event":"tenancy.ok","rid":null,"ms":66,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:33:19.910Z","event":"tenants.lookup.exact.ok","rid":null,"ms":23.1672,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:33:19.911Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:33:19.922Z","event":"tenants.lookup.exact.ok","rid":null,"ms":19.9002,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:33:19.925Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:33:19.928Z","event":"tenants.lookup.default.ok","rid":null,"ms":15.9658,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:33:19.930Z","event":"tenancy.ok","rid":null,"ms":44,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:33:19.966Z","event":"tenants.lookup.default.ok","rid":null,"ms":38.4963,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:33:19.968Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:34:19.587Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:34:19.635Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:34:19.638Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.0699,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:34:19.641Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:34:19.669Z","event":"tenants.lookup.exact.ok","rid":null,"ms":31.6635,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:34:19.670Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:34:19.671Z","event":"tenants.lookup.default.ok","rid":null,"ms":28.2209,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:34:19.673Z","event":"tenancy.ok","rid":null,"ms":86,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:34:19.681Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:34:19.709Z","event":"tenants.lookup.default.ok","rid":null,"ms":37.9762,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:34:19.710Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:34:19.715Z","event":"tenants.lookup.exact.ok","rid":null,"ms":33.0104,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:34:19.716Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:34:19.736Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:34:19.749Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.211,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:34:19.750Z","event":"tenancy.ok","rid":null,"ms":69,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:34:19.754Z","event":"tenants.lookup.exact.ok","rid":null,"ms":16.6678,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:34:19.755Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:34:19.758Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:34:19.782Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:34:19.788Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.2624,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:34:19.790Z","event":"tenancy.ok","rid":null,"ms":54,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:34:19.796Z","event":"tenants.lookup.exact.ok","rid":null,"ms":36.3159,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:34:19.797Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:34:19.804Z","event":"tenants.lookup.exact.ok","rid":null,"ms":20.3283,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:34:19.805Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:34:19.823Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.7652,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:34:19.825Z","event":"tenancy.ok","rid":null,"ms":43,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:34:19.831Z","event":"tenants.lookup.default.ok","rid":null,"ms":33.5051,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:34:19.833Z","event":"tenancy.ok","rid":null,"ms":75,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:34:19.844Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:34:19.854Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:34:19.869Z","event":"tenants.lookup.exact.ok","rid":null,"ms":13.4455,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:34:19.870Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:34:19.872Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.2493,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:34:19.873Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:34:19.887Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:34:19.904Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.6688,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:34:19.905Z","event":"tenancy.ok","rid":null,"ms":51,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm94qi0y_4t22ezu6',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:34:19.911Z","event":"tenants.lookup.default.ok","rid":null,"ms":35.8959,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:34:19.912Z","event":"tenancy.ok","rid":null,"ms":68,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:34:19.917Z","event":"tenants.lookup.exact.ok","rid":null,"ms":28.504,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:34:19.918Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:34:19.950Z","event":"tenants.lookup.default.ok","rid":null,"ms":31.0321,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:34:19.951Z","event":"tenancy.ok","rid":null,"ms":64,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8qxdnw_kur0oeki',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:34:19.957Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:34:19.985Z","event":"tenants.lookup.exact.ok","rid":null,"ms":26.6979,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:34:19.986Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:34:20.004Z","event":"tenants.lookup.default.ok","rid":null,"ms":17.3273,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:34:20.005Z","event":"tenancy.ok","rid":null,"ms":48,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm93rnfq_1w3j4d3b',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
Running periodic AI performance monitoring...
{"t":"2026-03-03T22:35:19.589Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:35:19.625Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:35:19.630Z","event":"tenants.lookup.exact.ok","rid":null,"ms":24.9444,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:35:19.631Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:35:19.649Z","event":"tenants.lookup.default.ok","rid":null,"ms":16.9838,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:35:19.650Z","event":"tenancy.ok","rid":null,"ms":61,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm88k6tn_bkytczs0',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:35:19.655Z","event":"tenants.lookup.exact.ok","rid":null,"ms":27.4704,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LIMIT 1","params":["localhost"],"rows":0}
{"t":"2026-03-03T22:35:19.656Z","event":"tenancy.fallback","rid":null,"reason":"no_match","tried":"localhost"}
{"t":"2026-03-03T22:35:19.670Z","event":"tenants.lookup.default.ok","rid":null,"ms":12.9839,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE id=1 LIMIT 1","params":[],"rows":1}
{"t":"2026-03-03T22:35:19.672Z","event":"tenancy.ok","rid":null,"ms":47,"hostRaw":"localhost:3000","hostNorm":"localhost","matched":true,"tenant":{"id":1,"domain":"giftwrap.co.za"},"hdrs":{"host":"localhost:3000","xfh":null,"xoh":null}}
[Gate Debug] POST /heartbeat - Body: {
  path: '/',
  session_id: 'gw_mm8uhqg9_zzz15izd',
  platform: 'giftwrap-v2'
}
[Gate Debug] IP detection: xff="", req.ip="::1", result="::1"
[Gate Debug] /heartbeat params: { tenantId: 1, ip: '::1', token: 'empty', route: '' }
[Gate Debug] No token for heartbeat
{"t":"2026-03-03T22:35:19.706Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:35:19.723Z","event":"tenancy.host","rid":null,"raw":"localhost","norm":"localhost"}
{"t":"2026-03-03T22:35:19.725Z","event":"tenants.lookup.exact.ok","rid":null,"ms":18.2487,"sql":"SELECT id, name, domain, base_currency, timezone, recaptcha_secret, recaptcha_site_key, theme, email, phone, address, company_name FROM tenants WHERE LOWER(TRIM(TRAILING '-' FROM domain)) = ? LI