EqualifyEverything / equalify-iris-bench

fix(prepare): measure a chunk before uploading it, and say what Iris said
Two failures from the first real four-URL bench, both of which cost a round trip to learn something a stat call knew. Splitting the 1004-page Texas appropriations act with pdfseparate + pdfunite produced 477 MB chunks from a 34 MB source: poppler copies the whole shared resource set into every slice. Each one was uploaded over a throttled link and refused with a 413. A chunk's size is not a function of its page count, so prepare now measures every chunk it writes against the deployment's published max_request_bytes and records the ones that came out unsendable as `chunk_too_large` — per chunk, so the pages that did fit are still runnable, and named, so the summary can say which pages are missing rather than quietly shipping a shorter corpus. The advice to install qpdf is attached only when poppler did the splitting, because qpdf subsets those resources instead of copying them. The 413 itself printed as "[object Object]". Iris's errors are structured — {code, message, details} — and this one named the declared size, the cap, and the remedy, all of which the harness destroyed on the way to the terminal. Worse, report.mjs groups failures by message, so every distinct structured error would have collapsed into a single bogus class. One shared errorText() now renders them for reading and grouping; the structured form is still what gets stored. A bad split is retryable, since the fix is on this side: --retry re-splits from scratch rather than trusting the chunks already on disk.
Blake Bertuccelli-Booth Blake Bertuccelli-Booth committed on Aug 24, 2026, 04:17 PM
Showing 6 changed files +169 additions -18 deletions
M src/prepare.mjs +70 -8
M src/report.mjs +2 -2
M src/run.mjs +3 -3
M src/util.mjs +12
M test/stub.mjs +12 -4
Browse files at this commit →