Release note · August 3, 2026
A benchmark for reviewing PowerPoint changes, not just rendering them
A slide can look unchanged while its stored behavior changes. A DrawingML click, hover, or mouse-over declaration can point somewhere new; a macro-category action can be retargeted while its public count remains the same; opaque macro or embedded-object bytes can change without a visible text edit. Those are review surfaces, but a tool’s claim to notice them has been difficult to compare or reproduce.
Presentation Change Assurance Benchmark (PCAB) makes one narrow part of that problem testable. Its first release supplies twelve deterministic baseline/candidate PresentationML pairs, public target-free truth manifests, a structural validator, a portable observation protocol, and a scorer. This is a benchmark for a static review gate—not a deck generator, visual comparison suite, or runtime safety verdict.
Compatibility update: PCAB 0.2.0
After the initial release, I tested the generated packages with the independent python-pptx reader. It correctly exposed a package-skeleton omission: the compact fixtures lacked the OPC root office-document relationship that a general PresentationML consumer expects. PCAB 0.2.0 adds that standards-form relationship to every package, validates it directly, and loads all 24 baseline/candidate packages through python-pptx in CI and fresh-wheel verification.
This is a versioned fixture-schema 2 update, not a quiet rewrite of the original data. The twelve public facts and cases remain the same, while the v0.1.0 release remains immutable. One independent reader loading the packages is useful compatibility evidence; it is not a claim that every PowerPoint client, runtime action, or rendering feature has been tested.
One stored boundary at a time
Every PCAB pair preserves its visible DrawingML text and differs in exactly one ZIP member. The cases cover external hyperlink retargeting; macro, program, external-file, external-presentation, OLE-verb, media, internal-navigation, and reserved actions; a missing action relationship; opaque VBA-project bytes; and opaque embedded-object bytes. The relationship targets use reserved example.invalid endpoints, and the macro and embedded members are deliberately inert marker bytes rather than executable samples.
The source generator and pcab validate check archive integrity, deterministic bytes, the one-member package boundary, stable visible text, and the bounded action/relationship shape. The public truth.json contract does not disclose action strings, relationship IDs or targets, macro names, slide text, payload bytes, or payload digests. That split gives a benchmark adapter safe facts to match while keeping raw fixture material out of a normal report.
A score that does not invent precision
Review tools do not need to adopt a shared internal report schema. An adapter writes a small observation document naming an analyzed case, exact public facts it found, and an optional allow, review, or block reference disposition. Unsupported and errored cases are explicit. The scorer reports expected-fact recall, analysis coverage, reference-policy agreement, and complete cases. Because PCAB’s oracle is intentionally targeted, an extra observation stays visible as unrecognized evidence; it is not called a false positive and PCAB does not publish a misleading precision number.
There is one optional reference adapter today. It invokes SlideFence 0.2.0 through its public JSON CLI, then accepts a PCAB fact only when the native safe inventories and change category exactly match the generated pair. On PCAB 0.1.0 it completes all 12 cases with matching reference dispositions. That is a reproducible integration result, not a requirement to use SlideFence and not evidence that any declaration executes.
What the benchmark does not say
PCAB never opens PowerPoint, renders a slide, resolves or fetches a relationship, executes VBA, activates OLE, plays media, parses an opaque payload format, verifies a signature, or predicts a Trust Center, client, or security outcome. It records stored package state only. A changed declaration warrants review; it does not prove that a target is reachable, an object is registered, a macro is valid, or a user can cause an action to happen.
Use the release
python -m pip install \
https://github.com/SybilGambleyyu/presentation-change-benchmark/releases/download/v0.2.0/presentation_change_benchmark-0.2.0-py3-none-any.whl
pcab validate
pcab observation-template --output observations.json
pcab score --observations observations.json --output score.json
PCAB 0.2.0 has a passing hosted Python 3.11–3.13 matrix, fresh wheel and source-distribution installation checks, a released-wheel download verification, independent-reader loading of every bundled package, and a separate SlideFence integration job. The fixture corpus is also mirrored as a public Hugging Face dataset. Read the release, observation protocol, and validation contract for the exact limits.