Inspect the CSS comparison¶
This maintainer-run comparison tests the published Fullbleed 2.5.14 Linux wheel
against the independent IronPress corpus at commit
0d1e53b6d8174d0a5059a8696c24e62759381f6d. The corpus contains 1,662 HTML/CSS
fixtures and committed reference PDFs: 1,629 Chromium references and 33
WeasyPrint references. Each fixture identifies its reference renderer; this run uses those pinned PDFs rather than launching current browser
or WeasyPrint versions.
The full run completed with 1,616 PASS, 27 FAIL, and 19 REFERENCE-DISPUTED across 1,662 fixtures.
| Verdict | Fixtures |
|---|---|
| PASS | 1,616 |
| FAIL | 27 |
| REFERENCE-DISPUTED | 19 |
| Total | 1,662 |
The unchanged upstream gate failed (process exit 101). It records 27 failing fixtures. Its 799 gate entries also include changes relative to the committed IronPress baseline; several entries can refer to the same fixture. All reasons remain in the raw report.
The upstream gate also checks its committed IronPress raster baseline. A changed fingerprint can fail that regression check even when the fixture's visibility verdict is PASS. The run retains this gate result and its reasons alongside the fixture verdicts; the baseline is not rewritten for this comparison.
Read the verdicts¶
- PASS means the fixture meets the upstream visibility policy. It does not necessarily mean pixel-identical output. Raw differences remain in the report.
- FAIL means the candidate failed the comparator or a rendering check.
- REFERENCE-DISPUTED means a visible mismatch against a reference tagged as disputed by the upstream corpus. These verdicts are not counted as passes. The reference dispute does not establish that Fullbleed renders the case correctly.
The corpus marks 20 reference PDFs as disputed. In this run, 19 receive REFERENCE-DISPUTED verdicts and one receives PASS under the unchanged comparator. That PASS does not resolve the reference's standards dispute. The raw JSON retains both the verdict and reference metadata. The passing tagged case is interactions/interactions-cartesian-effects-x-paged-media.
The same Poppler pdftoppm 24.08.0 executable rasterizes both sides. The upstream
comparator compares the same coordinates without moving one image to fit the
other. Fixtures, reference PDFs, comparator source, and thresholds are unchanged;
the integration substitutes Fullbleed at the candidate-renderer boundary.
Of the 1,662 fixtures, 858 have identical candidate and reference page raster fingerprints. This compares raster dimensions and RGBA hashes, not PDF file bytes. The remaining cases retain their measured differences and individual verdicts in the report.
Inspect the evidence¶
Download the complete evidence (50.0 MiB) · Structured summary · SHA-256 checksums
Open ironpress-evidence/current/reports/index.html in the downloaded archive.
The unmodified upstream report retains IronPress headings and candidate labels;
its candidate is Fullbleed in this run. The archive includes candidate PDFs,
reference and candidate page images, difference images, and the raw JSON report.
The upstream MIT license and font notices are retained. Category pages initially show non-PASS cases; select show PASS to inspect passing fixtures too.
fullbleed-run.json identifies the wheel, runner, adapter, patch, dependency lock,
container image, and invocation. manifest.json records each exported file's
SHA-256. The wrapper verifies a complete, unique fixture inventory and checks
that the JSON, Markdown, and HTML identify the same invocation and JSON digest.
Example of a failing fixture¶
border-image-intrinsic-overlap-reset fails with a 4.30% above-floor page difference. The repeated border-image patterns differ visibly. These are unmodified page images from the retained report; open an image to inspect it at full size.
Image provenance and hashes | Upstream MIT license. All failing cases remain in the complete report.
Results by category¶
These are fixture counts within this corpus, not percentages of the CSS standard.
| Category | PASS | FAIL | Disputed |
|---|---|---|---|
| backgrounds-borders | 79 | 3 | 1 |
| backgrounds-gradients | 46 | 0 | 0 |
| block-box-model | 59 | 0 | 0 |
| clip-mask | 52 | 0 | 0 |
| color-opacity | 49 | 0 | 1 |
| effects | 57 | 2 | 1 |
| filters | 46 | 0 | 1 |
| flexbox | 132 | 0 | 0 |
| fonts-advanced | 25 | 1 | 0 |
| generated-content | 33 | 2 | 2 |
| grid | 95 | 1 | 0 |
| images-replaced | 38 | 0 | 0 |
| inline-text | 45 | 4 | 1 |
| interactions | 350 | 10 | 2 |
| lists-counters | 34 | 0 | 1 |
| multicol | 36 | 0 | 0 |
| overflow-clipping | 17 | 0 | 3 |
| paged-media | 82 | 2 | 3 |
| positioning | 22 | 0 | 0 |
| probes | 6 | 0 | 0 |
| selectors-cascade | 60 | 0 | 0 |
| tables | 97 | 1 | 1 |
| text-advanced | 47 | 0 | 2 |
| transforms | 44 | 0 | 0 |
| typography | 23 | 1 | 0 |
| units-values | 42 | 0 | 0 |
Failing fixtures¶
The raw report retains the diagnostics and images for every failing case.
backgrounds-borders/border-image-fill-axis-repeatbackgrounds-borders/border-image-intrinsic-overlap-resetbackgrounds-borders/border-image-round-horizontaleffects/r2-box-shadow-inset-blur-radiuseffects/r2-text-shadow-blur-rgbafonts-advanced/fonts-advanced-font-synthesis-nonegenerated-content/generated-content-counters-nestedgenerated-content/generated-content-no-open-quote-depthgrid/grid-display-contents-fragmentation-text-survivalinline-text/inline-text-decoration-subpoint-geometryinline-text/inline-text-text-decoration-line-throughinline-text/inline-text-text-decoration-overlineinline-text/inline-text-text-decoration-colorinteractions/interactions-grid-fragmentation-svg-background-single-ownerinteractions/interactions-cartesian-backgrounds-borders-x-effectsinteractions/interactions-cartesian-block-box-model-x-clip-maskinteractions/interactions-cartesian-clip-mask-x-clip-maskinteractions/interactions-cartesian-clip-mask-x-tablesinteractions/interactions-cartesian-effects-x-overflow-clippinginteractions/interactions-cartesian-effects-x-page-marginsinteractions/interactions-cartesian-filters-x-overflow-clippinginteractions/interactions-cartesian-filters-x-paged-mediainteractions/interactions-transforms-x-font-synthesis-matrixpaged-media/paged-footnote-counter-resetpaged-media/paged-string-set-attr-starttables/tables-cell-generated-before-childtypography/typography-font-weight-bold
Disputed references¶
These 19 REFERENCE-DISPUTED verdicts remain separate from the PASS count. The reference metadata is retained for every fixture, including the passing tagged case described above.
background-clip-text-gradientopacity-text-glyph-groupr2-mix-blend-mode-text-differencer2-filter-url-feturbulence-displacementgenerated-content-first-letter-dropcapgenerated-content-string-set-running-headerinline-text-text-decoration-wavyinteractions-cartesian-page-margins-x-paged-mediainteractions-cartesian-positioning-x-tableslists-counters-marker-side-match-parentoverflow-axis-visible-hidden-coercionoverflow-scroll-print-clipoverflow-x-y-separatefootnote-floatpaged-footnote-display-compactpaged-footnote-max-heighttables-colspan-max-clamptext-advanced-text-combine-upright-centertext-advanced-text-combine-upright-digits
Reproduce and evaluate your templates¶
Follow the pinned runner instructions to use the same corpus and adapter. The retained workflow run records the execution.
The corpus runner needs Git, Docker, and a compatible Linux wheel. Its container
and external rasterizer are test tools, not dependencies of pip install
fullbleed. Cargo dependencies are locked separately for the upstream comparator.
The actual container image is recorded; operating-system packages are not a
byte-identical environment lock.
A corpus result applies to its exact engine version, fixtures, fonts, references, and comparison policy. It does not establish support for all CSS, browser JavaScript, arbitrary web pages, accessibility standards, or PDF conformance. Test your own templates with representative data and explicit fonts.
See CSS coverage for documented behavior and boundaries, or the shared-document renderer comparison for PDFs and timings from three application-style documents. That comparison uses different versions and inputs; its results should not be combined with this corpus run.


