Can duration_drift catch a slowdown that happens gradually, not all at once?
Yes, because duration_drift checks two references at once, and each one is blind to what the other catches. One is the call site’s rolling recent normal, which catches a sudden break like a deploy that doubles latency overnight. The other is pinned at a known-good point that only a person moves, so a change that inches up over weeks still reads as far from where things stood when the pin was set.
A rolling baseline on its own would absorb slow creep, a little each window, until slow was the new normal and nothing ever fired. A pinned baseline on its own would keep flagging forever, since it never resets by itself.
Both need history before either can say anything. A call site with too few comparable turns has no baseline to compare against, so a freshly tagged one stays quiet while the sample count climbs.