Does it use data that did not exist yet?
Why it matters
When a script asks for data from a higher timeframe, it can be told to use the finished value of a bar that had not finished at the time. On the historical chart this looks like foresight. Live, that value is not there yet. The chart will show a run of clean signals that nobody could have taken.
How to check
In open-source scripts, search for lookahead. The value barmerge.lookahead_on next to a request.security call is the thing to look for. In closed scripts you cannot see it — which is itself worth weighing.
From my own code
My own S/R Lines indicator did this until last week. With it removed, the levels appear forty hours later on a four-hour chart — that is the pivot confirmation delay, and it was always there. The old version simply hid it on the historical chart.