CONSTRAINT / ROTATIONS
Rotations
Orientation is restricted per axis, not as a single on/off switch, and 'this side up' is expressible on the item that needs it.
allowed_rotations · keep_uprightWhy it exists
Real goods have orientations they must not take. An engine that silently tries all six orientations answers a different question from the one that was asked.
What a useful refusal looks like
The engine returns the rule that refused, the item it refused, and the measured value against the configured threshold. It also states how strongly that is backed: proven, observed, inferred, or unknown because a search limit was reached first.
See the fixtures for this rule ↗