# Regression test for sub-pixel scroll jitter (sticky-in-fractional-reference-frame).
# A scroll frame with a large fractional external scroll offset contains a reference
# frame authored in scrolled space (origin -923.57). The display-list builder
# reconstitutes its origin as origin + external_scroll_offset in f32; at this
# magnitude that round-trip drops a few low bits, yielding 100.49994 instead of the
# intended 100.5 - pure float noise (exact arithmetic gives 100.5). A position:sticky
# frame inside reads that origin through its viewport, so the noise survives into the
# sticky offset (a plain prim would have it cancelled back out by the scroll). With
# the noise the stuck rect's edge sits at device y 30.49994 and snaps to row 30;
# REFERENCE_FRAME_ORIGIN_QUANTUM restores the origin to 100.5 so it snaps to row 31,
# matching the reference (which reconstitutes 100.5 exactly from an integer offset).
root:
  items:
    - type: scroll-frame
      bounds: [0, 0, 200, 400]
      content-size: [200, 4000]
      external-scroll-offset: [0, 1024.07]
      items:
        - type: stacking-context
          bounds: [0, -923.57, 200, 2000]
          transform: translate(0, 0)
          items:
            - type: sticky-frame
              bounds: [0, 100, 200, 20]
              margin-top: 30
              vertical-offset-bounds: [0, 2000]
              items:
                - type: rect
                  bounds: [0, 100, 200, 20]
                  color: green
