Release note · August 3, 2026
A legacy shape link can change without changing Word text
A Word document can carry a direct link on a legacy drawing shape rather than in ordinary hyperlink text or an OOXML relationship. The shape’s destination can change while every stored w:t text node remains unchanged. A serious package review needs to see that markup without pretending that it knows what a renderer displayed or what a user click would do.
Document Change Assurance Benchmark (DCAB) 0.11.0 adds its twenty-second deterministic pair: interaction.vml_shape_hyperlink_target_retargeted. Both packages retain the same members, Word text, direct VML rectangle, shape ID, styling, and target frame. Only word/document.xml changes: the rectangle’s direct href moves between two synthetic example.invalid destinations.
Legacy markup is still stored review evidence
Microsoft’s Open XML API describes a VML v:shape href as a hyperlink target. Microsoft’s Word OOXML guidance also explains that Word 2007 continued to use legacy VML for shapes and text boxes, while later documents can retain VML fallback markup. The relevant fact is therefore stored in the package even though it is not ordinary Word text.
This pair deliberately avoids turning that fact into a runtime claim. Its compact w:pict/v:rect marker has no relationship target, embedded payload, macro, or field evaluation. DCAB does not resolve the URL, load a browser, select a drawing branch, simulate a click, open Word, or assert that a client will follow the link. It tests only a direct stored attribute boundary.
One direct href boundary
The independent verifier checks the VML namespace and rectangle, fixed shape ID, target frame, styling attributes, exact direct href, deterministic package bytes, stable member set, unchanged stored Word text, and the exact one-member boundary. The standard python-docx reader opens all 42 .docx fixtures, and its lower-level OPC reader opens all 44 packages.
The optional local DocFence 0.27.0 adapter maps aggregate word_vml_hyperlink_inventory_changed evidence. Both sides retain one VML hyperlink element in one story, one concrete shape, zero groups, zero shape templates, and one target-frame attribute. The adapter detects the private markup fingerprint transition while disclosing none of the direct destination, shape ID, or target-frame value.
The release passed the full 18-test suite in hosted CI on Python 3.11, 3.12, and 3.13 plus a clean DocFence installation. Fresh wheel and source-distribution installs, the uploaded GitHub artifacts, and a fresh Hugging Face dataset download each validate the bundled 22-case corpus.
Use the release
python -m pip install https://github.com/SybilGambleyyu/document-change-benchmark/releases/download/v0.11.0/document_change_benchmark-0.11.0-py3-none-any.whl
dcab validate
dcab docfence-observations --executable docfence --output observations.json
dcab score --observations observations.json --strict
DCAB 0.11.0 retains fixture schema version 1 because the public truth and observation envelopes are unchanged; it extends the corpus from 21 to 22 cases. It publishes a narrow static review fact, not a visual-rendering, navigation, deployment, identity, or security-policy claim.
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.