# PDF compression editorial test record

Date: `2026-08-12`

Status: **PASS**

## Build under test

- Product: LocalFlux
- Version: `1.0.8.0`
- Architecture: `x64`
- Package identity: `Fuzzysense.Localflux_1.0.8.0_x64__pc6sn726wzvrt`
- AUMID: `Fuzzysense.Localflux_pc6sn726wzvrt!App`
- Retained package: `artifacts/releases/1.0.8.0/20260806-formal-3fc34ab/package-build/packages/x64/LocalFlux_1.0.8.0_x64_Test/LocalFlux_1.0.8.0_x64.msix`
- Package SHA-256: `BAF67B294EB03539AB817EA2D868C06DB9B037EC8EEC488229370FF237F16739`
- Bundled qpdf version: `12.3.2`
- Environment: local Windows 11 x64 host
- Evidence class: editorial reproduction; not clean-VM or release-qualification evidence

## Positive batch

Working folder: `C:\tmp\LocalFluxPdfCompressionBlog`

Procedure:

1. Generated three self-authored PDF fixtures and recorded their hashes.
2. Installed the exact retained 1.0.8 x64 package.
3. Launched LocalFlux with all three PDF paths and the Compress action.
4. Maximized the app, confirmed three queued files, and captured the ready state.
5. Opened the preset menu and confirmed Balanced was selected.
6. Selected **Compress 3 files**.
7. Waited for the LocalFlux completion state and copied the three generated outputs into `samples/output/`.
8. Checked every output with the bundled qpdf `--check` command.
9. Rendered every page of each input and output at 2x using PyMuPDF.
10. Visually inspected the 28-page contact sheet plus the full-size image-rich output page.

Results:

| Fixture | Source bytes | Output bytes | Reduction | Pages in/out | Integrity | Visual review |
| --- | ---: | ---: | ---: | ---: | --- | --- |
| Text-heavy handout | 29,266 | 4,742 | 83.797% | 5 / 5 | Pass | Pass |
| Image-rich lookbook | 3,483,636 | 499,263 | 85.668% | 4 / 4 | Pass | Pass |
| Already optimized handout | 4,741 | 4,741 | 0.000% | 5 / 5 | Pass | Pass; byte-identical |

Combined source size: `3,517,643` bytes
Combined output size: `508,746` bytes
Combined reduction: `3,008,897` bytes (`85.537%`)

The detailed hashes are recorded in `measurements.csv` and `verification.json`. The already-optimized input and output share SHA-256 `45972E5EC40CFE86D80565C8B40C41675803DA4985188689895F47730C3B9A2C`.

## Boundary runs

Working folder: `C:\tmp\LocalFluxPdfCompressionBoundary`

### Encrypted PDF

- Fixture: AES-256 encrypted copy of the self-authored text handout.
- Result: failed closed.
- User guidance: encrypted PDFs cannot be compressed yet; remove encryption and try again.
- Output file created: no.
- Screenshot: `screenshots/04-encrypted-rejected.jpg`.

### Signed-PDF detector

- Fixture: self-authored PDF carrying a signature dictionary with `/ByteRange` and `/Contents` markers.
- Result: failed closed.
- User guidance: rewriting a digitally signed PDF would invalidate its signature.
- Output file created: no.
- Limitation: this fixture tests signed-PDF detection and refusal, not cryptographic signature verification.

## Verification artifacts

- Measurements: `evidence/measurements.csv`
- Structured results: `evidence/verification.json`
- All page renders: `evidence/rendered-pages/`
- Visual QA index: `evidence/all-pages-contact-sheet.jpg`
- Fixture generator: `evidence/generate-fixtures.py`
- Verification generator: `evidence/verify_outputs.py`

## Known limitations

- Results describe one x64 host and one retained package; no ARM64 editorial run was performed.
- Only the Balanced preset was measured.
- No claim is made about accessibility-tree preservation beyond visual page rendering and page-count checks.
- No claim is made that compression removes metadata, annotations, form values, attachments, or sensitive content.
- The image-rich review was visual, not a perceptual metric or print-proof evaluation.
