GitHub Actions
if: always() so failure evidence is uploaded even when the threshold gate
returns nonzero.
GitLab CI
Choose the gate deliberately
- Start with
smoketo verify credentials and transport. - Use
mini-v4-sample(170 cases) for routine regression checks. - Use
mini-v4(510 cases) when the additional per-family precision justifies the cost and runtime. - Set
--fail-thresholdfrom your own established baseline and product risk, not from another model’s leaderboard score. - Pin the
pdfhellversion in CI and retain the run’s suite hash.
Compare like with like
A valid before/after comparison keeps all of these fixed:- suite hash;
- provider and model identifier;
- PDF versus pixels-only modality;
- DPI and rasterizer build for pixels-only runs;
- generation version and case files.
Evidence packs
--audit-pack path.zip packages the generated documents, answer keys, result
data, and integrity manifest. Keep the JSON and audit ZIP together for
procurement, compliance, or incident review. The JUnit file is optimized for CI
rendering and is not a substitute for the full result artifact.

