CI for csaxs_bec / test (push) Successful in 4m37s
cont_grid normalises a descending request into an ascending line -- fast_axis_always_in_pos_dir defaults to True -- so a file records fast_start > fast_end while the stage ran the other way. Reading direction from request_inputs therefore measures progress backwards, and every verdict built on it comes out inverted: the start of a line reads as its end. That is what produced the two wrong answers on scan 450. The three position samples per line were called a flyback and then dismissed as "0% in the commanded direction"; they are neither. They are the first half of the traverse, and they are the most useful thing in the file. computed_positions is written after the normalisation and before the premove, so it is what the trigger grid was actually built from, and it is what direction now comes from. The disagreement with the request is printed rather than hidden, since it is a trap for anyone reading these files by hand. Adds a "behind by" column: where the stage is against where the trigger grid assumes it is, in points. That is the quantity that matters, since the grid advances at the commanded velocity from the first point regardless of what the stage does, and any shortfall packs the early points into less distance than they were assigned. On scan 450 it reads 0.1, 11.9, 13.6 points across the three samples -- most of the lag appears in the first interval and then stops growing, which separates a slow start from a slow line. Also reports a velocity below the commanded one, not just above it. The verdict only fired on running fast, which was the wrong half of the range for the case actually in the data.