Verification

Parity & conformance evidence

Everything below is generated from Forme's CI on every commit — not hand-written, and it fails the build if it drifts from reality. It covers what CI actually proves: PDF/UA-1 and PDF/A conformance per document (via veraPDF), native-vs-WASM byte determinism, and test coverage. Failures and unsupported cases are included where they exist. It is not a browser-parity claim and not a coverage percentage.

Generated from CI run 33578075999 at 3203033 (v0.16.0) on 2026-09-02 01:28:56 UTC. Raw artifact →

Conformance

PDF/UA-1 and PDF/A, per document

Validated with veraPDF 1.30.2. The corpus is 5 shipped templates (invoice, receipt, report, shipping-label, letter) and 4 HTML fixtures (letterhead, dashed-borders, statement, zebra-invoice). Each PDF/A column is the archival-and-accessible render — the same file validated against the PDF/A profile and PDF/UA-1.

DocumentPDF/UA-1PDF/A-2b + UA-1PDF/A-2a + UA-1
template/invoice
template/receipt
template/report
template/shipping-label
template/letter
html/letterhead
html/dashed-borders
html/statement
html/zebra-invoice

Any failed profile shows its veraPDF clause list here; there are currently none. PDF/A-2u is supported and reachable but not gated separately (2a is the strictest of the three).

Determinism

Byte-for-byte, across build targets

The same document renders to byte-identical PDFs across the native binary and the WASM targets, over the four HTML fixtures. These are distinct strengths of evidence and shown as such: native, node, and web are compared byte-for-byte; the bundler target embeds a hash-identical WASM module (so it computes identically by construction) and is exercised by functional browser and workerd renders — it is not itself byte-diffed here.

ComparisonFixtureBytesIdentical
node↔webletterhead3,843
native↔nodeletterhead3,843
node↔webreport5,541
native↔nodereport5,541
node↔webzebra-invoice3,603
native↔nodezebra-invoice3,603
node↔webdashed-borders1,906
native↔nodedashed-borders1,906
WASM hash-identity (bundler / web / node)
identical module
sha256 445395e8dedf32aa419f8ea00289e10a…

Regression evidence

Structural assertions from Chrome reference & third-party corpus

Boolean structural assertions (page count, break positions, table structure, valign) read from Chrome's rendering of these fixtures and asserted exactly. NOT a general browser-parity claim or a measured diff.

br_produces_a_multi_line_address_block fixture_renders_to_a_single_page_pdf heading_list_and_image_map_to_engine_node_types margin_collapse_h1_to_p_gap_is_max_not_sum margin_collapse_p_to_p_gap stylesheet_block_is_ignored_not_rendered table_maps_with_header_and_all_rows unknown_css_lands_in_warnings_not_errors whitespace_collapses_through_the_whole_pipeline

Hand-reduced repros distilled from the ironpress parity corpus (third-party test material, MIT). Not upstream copies.

Source: gastongouron/ironpress (MIT).

break_before_page_after_content_still_breaks break_before_page_on_first_block_is_suppressed empty_styled_paragraph_renders_its_box table_cell_vertical_align_positions_markers

Test coverage

Suite counts

Passing tests per suite, parsed from an actual run. Stated as a fact, not a percentage.

engine (lib + integration)535 passed
html crate114 passed
@formepdf/core76 passed
@formepdf/react215 passed
@formepdf/preact4 passed
@formepdf/svelte74 passed
@formepdf/vue1 passed
@formepdf/renderer26 passed
@formepdf/mcp78 passed
@formepdf/resend5 passed
@formepdf/tailwind65 passed
@formepdf/vscode11 passed
total1,204 passed

Known gaps & deliberate divergences

What isn't claimed