Skip to content

PDFFence 1.27.0

Latest

Choose a tag to compare

@SybilGambleyyu SybilGambleyyu released this 07 Aug 12:29

Private batch mappings now detect accidental source reuse

PDFFence 1.27.0 adds require_unique_document_sources (PFP017), a
high-severity, batch-only policy gate enabled by pdffence init.

It detects when an exact private relative manifest path is assigned to more
than one public review ID on the same before or after side. Each affected ID
receives a generic finding containing only the side and number of references;
the report never reveals the root, path, filename, source value, hash, or PDF
material.

The gate is deliberately narrow. It does not compare contents, infer renames,
or treat hard links and other filesystem aliases as identity. Disable it
explicitly only for a reviewed one-to-many workflow.

Exact repeated same-side sources also share one validated snapshot per batch
run, avoiding repeated parser work from duplicate manifest entries.

Validation included 277 tests, Ruff, bytecode compilation, a 161-entry
PDFCAB-derived batch, an adversarial duplicate-source manifest, reproducible
fixed-timestamp wheel/source builds, fresh Python 3.12/3.13 installs, Twine,
and a dependency audit. See docs/validation.md for scope and limitations.

Install the tagged wheel:

python -m pip install https://github.com/SybilGambleyyu/pdffence/releases/download/v1.27.0/pdffence-1.27.0-py3-none-any.whl

PDFFence is structural, local review tooling. It does not render PDFs, compare
visual appearance, validate PDF conformance or signatures, decrypt sources,
extract text, execute actions, follow URIs, or detect malware.