Weston's Wayland-backend currently relies on the timestamp delivered by the frame callback event for timings. However, you don't know what clock that timestamp is from, it has been truncated into milliseconds, and because it is of type uint32_t, it may have also overflown in the parent compositor.
If the Presentation feedback extension is available from the parent compositor, use it to get proper timestamps. The Wayland backend's presentation clock should be the same as the parent compositor's. Presentation_feedback.presented should be the one triggering weston_output_finish_frame().
A whole another issue is what to do with discarded frames.