The plate is authored y-up while canvas text is laid out y-down, so the affine
solved from the raw local corners had a negative determinant: every verdict drew
mirrored, with the line order reversed, in idle and reveal alike.
Solve the transform in a y-down text space instead, flip the clip to match, and
cover the orientation with a regression test.
Covers the missing-key 503, hasKey reporting, input validation without an
upstream call, the hazy-to-decisive override, upstream failures preserving
status plus fallback, and deterministic offline fallbacks.
Also points "main" at server.js, since index.js did not exist.