# HTML Quality Probe

These checks are diagnostic and non-gating. A `needs-review` status means the generated artifacts found a likely conversion-quality issue, not that artifact generation failed.

- Status: `needs-review`
- Source PDF: [../source.pdf](../source.pdf)
- Generated HTML: [../semantic-continuous/index.html](../semantic-continuous/index.html)
- Sample notes: Long government publication with structured requirements, tables, figures, dense vectors, and extensive links. Categories: government-publication, text-heavy, tables, figures, links. Canonical source: https://csrc.nist.gov/pubs/sp/800/171/r3/final
- Text reference: `pdfbox-net-run-fallback`
- Pages analyzed: 15

## Page Summary

| Page | Status | Source words | HTML words | Token coverage | Long HTML tokens | Foreground delta | Severe color delta | Text/object overlaps |
| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| 1 | `needs-review` | 38 | 29 | 0.763 | 0 | 0.124 | 0.02 | 0 |
| 2 | `needs-review` | 75 | 66 | 0.88 | 0 | 0.343 | 0 | 0 |
| 3 | `needs-review` | 478 | 444 | 0.929 | 0 | 0.159 |  | 0 |
| 4 | `needs-review` | 81 | 66 | 0.815 | 0 | 0.176 |  | 0 |
| 5 | `needs-review` | 294 | 292 | 0.993 | 0 | 0.293 |  | 0 |
| 6 | `needs-review` | 170 | 168 | 0.988 | 0 | 0.285 |  | 0 |
| 7 | `needs-review` | 142 | 140 | 0.986 | 0 | 0.266 |  | 0 |
| 8 | `needs-review` | 53 | 17 | 0.264 | 0 | 0.406 |  | 0 |
| 9 | `needs-review` | 173 | 17 | 0.081 | 0 | 0.023 |  | 0 |
| 10 | `needs-review` | 176 | 174 | 0.989 | 0 | 0.286 |  | 0 |
| 11 | `needs-review` | 603 | 581 | 0.954 | 0 | 0.08 |  | 0 |
| 12 | `needs-review` | 378 | 374 | 0.989 | 0 | 0.274 |  | 0 |
| 13 | `needs-review` | 432 | 296 | 0.683 | 0 | 0.122 |  | 0 |
| 14 | `needs-review` | 437 | 426 | 0.973 | 0 | 0.158 | 0.188 | 0 |
| 15 | `needs-review` | 279 | 271 | 0.964 | 0 | 0.247 |  | 0 |

## Issue Categories

| Category | Status | Evidence |
| --- | --- | --- |
| Text reconstruction and word boundaries | `needs-review` | 6 page(s) need review; worst token coverage is 0.081 on page 9, with 0 high-confidence adjacent-word join(s). |
| Page geometry and text-run structure | `passed` | Page dimensions passed where measured; 15 continuous semantic-flow run-count check(s) were skipped because source runs are intentionally grouped. |
| Text wrapping around images and vector objects | `passed` | No text overlaps with image boxes or large vector boxes were found on analyzed pages. |
| Visual foreground parity | `needs-review` | Max foreground delta is 0.406; max source-only foreground ratio is 0.679; max HTML-only foreground ratio is 0.791. |
| Visual color parity | `needs-review` | Max mean CIE Lab color delta is 9.785; max severe color-delta ratio is 0.188; minimum compared page-pixel ratio is 0. |
| Source fixture expectations (manual review) | `needs-review` | Captured 1 source-authored acceptance statement(s) across 1 page(s); compare them with the visual evidence before treating the fixture as passed. |
| Probe setup and tool availability | `passed` | The browser probe and available renderers ran. |

## Fixture Expectations

These source-authored statements describe the intended appearance and make the corresponding visual diffs easier to interpret.

- Page 3:
  - Nothing in this publication should be taken to contradict the standards and guidelines made mandatory and

## Current Limitations

- Text reconstruction did not preserve all word boundaries or reading order on the affected page(s).
- The visual probe compared at least one page using only the overlapping crop because renderer/browser pixel dimensions differed beyond the probe tolerance.
- Perceptual color differences exceed the severe-corruption threshold on at least one page; inspect the color heatmap for incorrect fills, opacity, blending, or color-space conversion.
- The HTML contains additional foreground pixels compared with the PDF render on at least one page, which often means duplicated glyphs, fallback text, or unmodeled object masks.

## Findings

- Page 1, `word-boundaries`: Rendered HTML text appears to have lost word boundaries or token coverage.
- Page 1, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 1, `visual-color-difference`: PDF render and browser page screenshot have different pixel dimensions; color was compared across stable foreground interiors in the overlapping region only.
- Page 2, `word-boundaries`: Rendered HTML text appears to have lost word boundaries or token coverage.
- Page 2, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 2, `visual-color-difference`: PDF render and browser page screenshot have different pixel dimensions; color was compared across stable foreground interiors in the overlapping region only.
- Page 3, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 4, `word-boundaries`: Rendered HTML text appears to have lost word boundaries or token coverage.
- Page 4, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 5, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 6, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 7, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 8, `word-boundaries`: Rendered HTML text appears to have lost word boundaries or token coverage.
- Page 8, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 9, `word-boundaries`: Rendered HTML text appears to have lost word boundaries or token coverage.
- Page 9, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 10, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 11, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 12, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 13, `word-boundaries`: Rendered HTML text appears to have lost word boundaries or token coverage.
- Page 13, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 14, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.
- Page 14, `visual-color-difference`: PDF render and browser page screenshot have different pixel dimensions; color was compared across stable foreground interiors in the overlapping region only.
- Page 15, `visual-foreground-mask`: PDF render and browser page screenshot have different pixel dimensions; foreground masks were compared across the overlapping region only.

## Artifacts

- [page-1-html.png](page-1-html.png)
- [page-1-source.png](page-1-source.png)
- [page-1-diff.png](page-1-diff.png)
- [page-1-color-heatmap.png](page-1-color-heatmap.png)
- [page-1-visual-report.html](page-1-visual-report.html)
- [page-2-html.png](page-2-html.png)
- [page-2-source.png](page-2-source.png)
- [page-2-diff.png](page-2-diff.png)
- [page-2-color-heatmap.png](page-2-color-heatmap.png)
- [page-2-visual-report.html](page-2-visual-report.html)
- [page-3-html.png](page-3-html.png)
- [page-3-source.png](page-3-source.png)
- [page-3-diff.png](page-3-diff.png)
- [page-3-visual-report.html](page-3-visual-report.html)
- [page-4-html.png](page-4-html.png)
- [page-4-source.png](page-4-source.png)
- [page-4-diff.png](page-4-diff.png)
- [page-4-visual-report.html](page-4-visual-report.html)
- [page-5-html.png](page-5-html.png)
- [page-5-source.png](page-5-source.png)
- [page-5-diff.png](page-5-diff.png)
- [page-5-visual-report.html](page-5-visual-report.html)
- [page-6-html.png](page-6-html.png)
- [page-6-source.png](page-6-source.png)
- [page-6-diff.png](page-6-diff.png)
- [page-6-visual-report.html](page-6-visual-report.html)
- [page-7-html.png](page-7-html.png)
- [page-7-source.png](page-7-source.png)
- [page-7-diff.png](page-7-diff.png)
- [page-7-visual-report.html](page-7-visual-report.html)
- [page-8-html.png](page-8-html.png)
- [page-8-source.png](page-8-source.png)
- [page-8-diff.png](page-8-diff.png)
- [page-8-visual-report.html](page-8-visual-report.html)
- [page-9-html.png](page-9-html.png)
- [page-9-source.png](page-9-source.png)
- [page-9-diff.png](page-9-diff.png)
- [page-9-visual-report.html](page-9-visual-report.html)
- [page-10-html.png](page-10-html.png)
- [page-10-source.png](page-10-source.png)
- [page-10-diff.png](page-10-diff.png)
- [page-10-visual-report.html](page-10-visual-report.html)
- [page-11-html.png](page-11-html.png)
- [page-11-source.png](page-11-source.png)
- [page-11-diff.png](page-11-diff.png)
- [page-11-visual-report.html](page-11-visual-report.html)
- [page-12-html.png](page-12-html.png)
- [page-12-source.png](page-12-source.png)
- [page-12-diff.png](page-12-diff.png)
- [page-12-visual-report.html](page-12-visual-report.html)
- [page-13-html.png](page-13-html.png)
- [page-13-source.png](page-13-source.png)
- [page-13-diff.png](page-13-diff.png)
- [page-13-visual-report.html](page-13-visual-report.html)
- [page-14-html.png](page-14-html.png)
- [page-14-source.png](page-14-source.png)
- [page-14-diff.png](page-14-diff.png)
- [page-14-color-heatmap.png](page-14-color-heatmap.png)
- [page-14-visual-report.html](page-14-visual-report.html)
- [page-15-html.png](page-15-html.png)
- [page-15-source.png](page-15-source.png)
- [page-15-diff.png](page-15-diff.png)
- [page-15-visual-report.html](page-15-visual-report.html)
