Release note · August 3, 2026

A template target can change without changing Word text

By SybilGambleyyu · Document Change Assurance Benchmark 0.2.0

A Word document can retain the same visible text, the same settings anchor, and the same relationship ID while changing which external template that anchor names. That is a meaningful stored review boundary—not because a static tool should fetch or open the template, but because it should make the retargeting visible to a reviewer.

Document Change Assurance Benchmark (DCAB) 0.2.0 adds its thirteenth deterministic paired package: external.attached_template_target_retargeted. The pair preserves every package member and every stored w:t sequence. It changes only word/_rels/settings.xml.rels, retaining a fixed w:attachedTemplate anchor in word/settings.xml.

Inspect the relationship; do not resolve it

Microsoft’s Office Open XML notes for attached templates state that Word determines the template file path from the attachedTemplate relationship. DCAB represents that relation as an external package relationship, but its builder, validator, scorer, and reference adapter never follow the target or launch a document client.

The package target is synthetic and uses example.invalid. The public truth contract does not disclose it, the relationship ID, or the relationship path. It declares only the target-free fact external_document_dependency_target_changed, with an attached-template dependency and external binding. That lets tools demonstrate coverage without requiring real document destinations in benchmark output.

A constrained, reproducible case

The generator adds the settings relationship part only when an attached template is present. The independent validator checks the anchor, relationship type, external target mode, deterministic package bytes, stable member set, and the exact one-member pair boundary. The standard python-docx reader opens every .docx fixture, including this pair; its lower-level OPC reader opens all 26 packages.

The optional local DocFence 0.27.0 adapter recognizes the change from public aggregate evidence: an external-relationship change plus an external-document-dependency inventory change, while the attached-template anchor and relationship counts stay at one. It does not consume DocFence’s private signatures or targets.

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.2.0/document_change_benchmark-0.2.0-py3-none-any.whl
dcab validate
dcab docfence-observations --executable docfence --output observations.json
dcab score --observations observations.json --strict

DCAB 0.2.0 preserves fixture schema version 1 because its public truth and observation envelopes have not changed; the new release extends the catalogue from 12 to 13 cases. It does not claim a Word runtime outcome, template safety, universal policy, or rendering equivalence. It gives reviewers a compact way to prove that this stored target change is covered.

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.