| plat | recv | done | noCand | fail | fail% | avgPrd | p50 | p95 | avg | topErr |
|---|
Header indicators
- recv
- callbacks received (deduped)
- dup
- duplicate callbacks — same reqKey redelivered (at-least-once)
- rej
- always 0 — the token gate was removed for load-test convenience
- avg
- avg received per second since start
- last-min
- count received in the last completed minute
- up
- receiver uptime (seconds)
- started / now
- receive start time / current time
Namespace (multi-user)
- each run/user has its own namespace — set
LT_CALLBACK=https://<host>/hook/<ns> - type that same ns in the box above to watch it; files/stats/graph are fully isolated per ns
- plain
/hook(no ns) and scanner noise land in default - raw payload (checkbox): also store each full webhook body in the ndjson — per namespace, off by default (on = bigger files, full product detail)
Table columns (per platform)
- plat
- platform code (matches line color)
- recv
- callbacks received for that platform
- done
- search succeeded, has results (SEARCH_COMPLETED)
- noCand
- search ran fine but 0 results (NO_CANDIDATE)
- fail
- search failed (SEARCH_FAILED)
- fail%
- fail ÷ (done+noCand+fail). red if > 5%
- avgPrd
- avg products per callback (0-result ones counted in the denominator)
- p50 / p95
- worker search latency (ms), median / 95th percentile
- topErr
- top 2 failure errorCodes — the "why"
Graph · how to read
- colored lines = per platform; click a legend item to show/hide it (total is hidden by default — click "total" for the aggregate)
- y-axis auto-scales to the visible lines (callbacks/min); x-axis = time (HH:MM), scrolls — after activate it starts at the run's beginning
- 1-minute buckets — a new point is added each minute (so it grows slowly)
- this monitor checks search working / blocked, not answer correctness
errorCode: NET·TIMEOUT (network) / RATE_LIMITED / BLOCKED (anti-bot) / TERMINAL (permanent failure)