A four-state drift board: one banded strip per feature on a shared PSI scale with the warn and alert rules drawn across every row, the prediction-drift lane on top, and the worst offender named — pick any window from the tick row to read the whole card at that moment.
Preview in your theme
Loading preview…
This component is part of Pro
The install command, prompt and concept map are included with a Pro license — one purchase unlocks every Pro component, forever.
production traffic · 12.4M turns · 8 features · 10 windows · PSI vs 2026-04-20 → 2026-05-17
Worst offender: lang_non_en (baseline 18% of turns non-English) — PSI 0.41 in W28, 4 of 10 measured windows over the alert line, trend +0.040 per window.
windowPSI
prediction
0.33lang_non_en
0.41alertretrieval_hits
0.17watchroute_tier
0.26alertttft_ms
0.07stabletool_call_ratio
0.14watchcontext_used
0.13watchprompt_tokens
0.06stableoutput_nats
0.04stable
W28 — prediction PSI 0.33 (alert) · 2 of 8 measured features over the alert line · biggest rise lang_non_en +0.05 vs W27.
stable under 0.1050% of cells
watch 0.10 to 0.2538% of cells
alert 0.25 and over12% of cells
PSI is the population stability index: a distance between this window and the baseline, so every row shares one scale topped at 0.45 and one pair of threshold rules — a bar crosses the dashed alert line at exactly the value that turns it red. Rows rank by windows over the alert line, then by the newest reading. The three shares above are apportioned by largest remainder over 77 measured cells, so they total 100 rather than 99 or 101. 3 of 80 cells were never measured and are drawn as a dash, not as a zero.
PSI per window for 8 features across 10 windows, worst first. Worst offender: lang_non_en (baseline 18% of turns non-English) — PSI 0.41 in W28, 4 of 10 measured windows over the alert line, trend +0.040 per window. Up to 12 windows, evenly spaced by rank.
Series
Baseline
W19
W20
W21
W22
W23
W24
W25
W26
W27
W28
prediction
2026-04-20 → 2026-05-17
0.03 stable
0.05 stable
0.07 stable
0.06 stable
0.10 watch
0.16 watch
0.21 watch
0.24 watch
0.28 alert
0.33 alert
lang_non_en
18% of turns non-English
0.05 stable
0.08 stable
0.11 watch
0.14 watch
0.19 watch
0.24 watch
0.27 alert
0.31 alert
0.36 alert
0.41 alert
retrieval_hits
p50 8 of 12 chunks used
0.04 stable
0.05 stable
0.06 stable
0.05 stable
0.08 stable
0.31 alert
0.38 alert
0.29 alert
0.21 watch
0.17 watch
route_tier
62% mini · $1.80 / Mtok blended
not measured
not measured
not measured
0.09 stable
0.13 watch
0.16 watch
0.15 watch
0.20 watch
0.23 watch
0.26 alert
ttft_ms
p50 214 ms · p99 940 ms
0.07 stable
0.06 stable
0.08 stable
0.07 stable
0.09 stable
0.10 watch
0.28 alert
0.12 watch
0.08 stable
0.07 stable
tool_call_ratio
31% of turns call a tool
0.06 stable
0.07 stable
0.09 stable
0.11 watch
0.10 watch
0.12 watch
0.13 watch
0.11 watch
0.12 watch
0.14 watch
context_used
p50 3.1% of a 512k window
0.02 stable
0.03 stable
0.05 stable
0.06 stable
0.09 stable
0.18 watch
0.22 watch
0.19 watch
0.15 watch
0.13 watch
prompt_tokens
p50 6.2k · p99 118k tok
0.03 stable
0.04 stable
0.12 watch
0.16 watch
0.14 watch
0.11 watch
0.09 stable
0.08 stable
0.07 stable
0.06 stable
output_nats
1.83 nats/token held out
0.02 stable
0.03 stable
0.02 stable
0.04 stable
0.03 stable
0.05 stable
0.04 stable
0.06 stable
0.05 stable
0.04 stable
empty
Feature drift · assistant-v4
production traffic · 12.4M turns · PSI vs 2026-04-20 → 2026-05-17
No drift windows yet
A drift monitor compares each window against a frozen baseline, so it stays blank until the first window after that baseline closes. The bands are ready already: PSI under 0.10 is stable, 0.10 to 0.25 is watch, 0.25 and over is alert.
loading
Feature drift · assistant-v4
production traffic · 12.4M turns · PSI vs 2026-04-20 → 2026-05-17
Loading drift monitor
error
Feature drift · assistant-v4
production traffic · 12.4M turns · PSI vs 2026-04-20 → 2026-05-17