Decide whether a capture looks cropped, and say what to do about it.
Pure and synchronous: it logs nothing (the harness owns the console), and the
caller decides whether to warn. worst is the pose with the highest border-lit
COUNT — ties keep the FIRST, so the 'still' sample wins over an orbit pose
with the same reading and the message names the pose easiest to reproduce.
Ranking by raw count is sound because every sample is a screenshot of the same
Playwright viewport, so count and perimeter fraction rank identically; it also
keeps cropped (a count against floor) consistent with worst. If poses are
ever captured at differing resolutions, BOTH this ranking and the count-based
floor need revisiting.
The advice follows whichever framing path the demo actually took, because
suggesting a knob that is not in play would be worse than saying nothing:
distance set → the closed-loop fill was bypassed; RAISE the distance.
autoFrame: false → the fill was skipped, so framing is whatever F
produced (an authored viewer_config camera, or a plain bounds fit when
the scene authors none); the crop has to be fixed there.
otherwise → lower fillTarget by FILL_TARGET_SUGGEST_STEP, unless
that would land under FILL_TARGET_MIN.
A zoom > 1 is then appended on ALL THREE paths, because the harness applies
that dolly last on all three — and being last makes it the likeliest culprit.
floor exists so the documented escape hatch (raising
BORDER_LIT_MAX when the warning proves noisy) is a tested contract
rather than an untested claim. It is NOT a per-call knob for the harness,
which always takes the default.
Decide whether a capture looks cropped, and say what to do about it.
Pure and synchronous: it logs nothing (the harness owns the console), and the caller decides whether to warn.
worstis the pose with the highest border-lit COUNT — ties keep the FIRST, so the'still'sample wins over an orbit pose with the same reading and the message names the pose easiest to reproduce. Ranking by raw count is sound because every sample is a screenshot of the same Playwright viewport, so count and perimeter fraction rank identically; it also keepscropped(a count againstfloor) consistent withworst. If poses are ever captured at differing resolutions, BOTH this ranking and the count-based floor need revisiting.The advice follows whichever framing path the demo actually took, because suggesting a knob that is not in play would be worse than saying nothing:
distanceset → the closed-loop fill was bypassed; RAISE the distance.autoFrame: false→ the fill was skipped, so framing is whateverFproduced (an authoredviewer_configcamera, or a plain bounds fit when the scene authors none); the crop has to be fixed there.fillTargetby FILL_TARGET_SUGGEST_STEP, unless that would land under FILL_TARGET_MIN. Azoom> 1 is then appended on ALL THREE paths, because the harness applies that dolly last on all three — and being last makes it the likeliest culprit.floorexists so the documented escape hatch (raising BORDER_LIT_MAX when the warning proves noisy) is a tested contract rather than an untested claim. It is NOT a per-call knob for the harness, which always takes the default.