Shoots one room as a set of pose-stamped frames. The lens is measured on this phone, in this grip, before anything else — every number after that derives from it, so nothing here assumes a camera.
Not optional. The layout model returns metric room dimensions only by assuming a 1.6 m camera height; the measured value is what lets that scale be corrected, and it is the cheapest route to real-world scale for the whole pipeline.
An ultra-wide, where the phone has one, is the single biggest lever on how long this takes — roughly 15 shots against 38.
Locked before the first frame rather than watched afterwards. Exposure drifting across a sweep bands every seam, and the enhancement stage then corrects each frame differently, which compounds it. Whether a lock actually took is decided on the brightness of the picture, not on the camera agreeing that it took — a capability can be advertised and not implemented, and the settings a camera reports back are its own record of what was asked for.
Solved from the rotation the sensors reported and the distance the image actually moved. Everything downstream — the number of shots, the reticle, the blur budget — comes off these numbers.
Sweeping the phone at arm's length moves the lens through an arc, and parallax between neighbouring frames is the one thing a stitcher cannot reconcile. This phone reports no camera translation, so the arc is measured from its centripetal acceleration instead. That substitution is untested on hardware — this check is how it gets tested, by giving it two cases it must tell apart.
Judged per band, never as one number. A sweep can be 95% complete overall and still have missed every wall junction.
One zip, unpacking to the folder layout the pipeline
reads: frames/NNN.jpg beside capture.json.