Release note · August 3, 2026
Imported content can change without changing Word text
A Word package can retain all of its stored text, an import anchor, and its relationship ID while changing the alternate content that a client may later import. That is a consequential package change a text diff cannot see, and a static reviewer should be able to report it without attempting the import.
Document Change Assurance Benchmark (DCAB) 0.5.0 adds its sixteenth deterministic paired package: import.alternative_format_html_payload_changed. Both sides retain a fixed w:altChunk r:id anchor, a fixed internal afChunk relationship, every package member, and every stored w:t sequence. Only word/afchunk1.html changes.
Inspect the payload; do not import it
Microsoft’s Open XML documentation for AltChunk describes the anchor as a location for alternate content to be imported through an internal afChunk relationship. DCAB uses a compact inert HTML marker payload, but its builder, structural validator, scorer, and reference adapter never parse HTML, import content, launch Word, or claim what a client will render.
The public truth declares only alternative_format_import_payload_changed, with an HTML payload kind and the Word altChunk source. It excludes the payload bytes, content, relationship ID, relationship path, and any client-generated WordprocessingML. That keeps the benchmark useful for coverage reporting without making it a vehicle for document content disclosure.
An internal relationship with a visible review boundary
The generator emits the standard internal relationship and the HTML content-type override only when the import payload exists. The independent verifier checks the w:altChunk anchor, relationship type, internal mode, payload member, deterministic package bytes, stable member set, unchanged Word text, and exact one-member pair boundary. The standard python-docx reader opens all 30 .docx fixtures, and its lower-level OPC reader opens all 32 packages.
The optional local DocFence 0.27.0 adapter maps the public alternative-format import inventory change while the anchor, relationship, and payload-part counts remain one. It does not consume the payload or a private signature.
The release passed 12 tests locally, including that adapter path, then passed hosted CI on Python 3.11, 3.12, and 3.13 plus a clean DocFence installation. Fresh wheel and source-distribution installs each validate the bundled corpus.
Use the release
python -m pip install https://github.com/SybilGambleyyu/document-change-benchmark/releases/download/v0.5.0/document_change_benchmark-0.5.0-py3-none-any.whl
dcab validate
dcab docfence-observations --executable docfence --output observations.json
dcab score --observations observations.json --strict
DCAB 0.5.0 retains fixture schema version 1 because the public truth and observation envelopes are unchanged; it extends the corpus from 15 to 16 cases. It does not claim imported HTML is safe, has been processed, yields any particular Word text, or will be handled by a client. It supplies a reproducible static payload boundary for serious document review.
The MIT-licensed source, generated fixtures, structural verifier, release artifacts, and research notes are available on GitHub. The fixture corpus is also mirrored as a public Hugging Face dataset.