The cap was 1.55.x because 1.61 pairs with Firefox 151 and sent viewport fields
the old binary rejected. firefox-18 rebases onto 151, so the range moves to
>=1.55,<1.62 and playwright_pin.txt to 1.61.0. Both ends tested against the new
binary: 1.61 ran the full browser suite on Windows and Linux, 1.55 is protocol
drift-free. The upper bound stays exclusive so the next minor must be tested.
B6: pin every third-party action in the build/publish path to an immutable
commit SHA (a retagged actions/checkout or action-gh-release would otherwise
inject code into the binary users download). The other workflows (tests, webrtc,
launch-matrix) handle no secrets, so they're left on tags.
B4: the playwright pin lived in two workflow files with no shared source. Move
it to scripts/playwright_pin.txt that both read, so they can't drift. The drive
gate already ENFORCES playwright<->juggler compatibility (an incompatible pin
fails the launch/drive and nothing publishes); the file is the single bump point
when the juggler is re-synced.