Release note · August 4, 2026
A stored template-style update request deserves review
A consequential WordprocessingML change can be one setting even when the attached template, its relationship, the relationship target, package topology, and stored text all stay fixed. A reviewer needs to distinguish a target retargeting from a stored request to update styles from the same template. That distinction is meaningful without ever loading the template or running a document client.
Document Change Assurance Benchmark (DCAB) 0.21.0 adds its thirty-second deterministic pair: review.template_style_update_on_open_enabled. The baseline stores w:linkStyles w:val="false"; the candidate stores w:linkStyles w:val="true". Only word/settings.xml changes.
A fixed external topology around one direct setting
Microsoft documents LinkStyles as the WordprocessingML setting for automatically updating styles from an attached template when a document opens. The benchmark stores the setting and constrains its surroundings; it does not simulate or assert the client behavior described by that setting.
word/settings.xml only changed package member
w:attachedTemplate r:id="rId…" fixed direct anchor
w:linkStyles w:val="false" baseline direct leaf
w:linkStyles w:val="true" candidate direct leaf
word/_rels/settings.xml.rels byte-identical on both sides
rId… → synthetic external template fixed relationship and target
The pair retains the same package members and stored w:t sequence. Its Settings relationship ID, external relationship type, and reserved-domain synthetic target are fixed. Construction and validation never resolve, retrieve, or load the template; open Word; propagate a style; or claim that a client will make a style change.
A target-free fact for static reviewers
The public oracle reports one narrow fact:
{
"dependency": "attached_template",
"kind": "template_style_update_on_open_enabled",
"source": "word_settings"
}
It excludes the relationship target, relationship ID, raw Settings serialization, attached-template path, document content outside the fixed synthetic text, and private fingerprints. Independent structural validation checks exact direct-leaf forms, a one-member change boundary, byte-identical Settings relationships, stable template topology, unchanged stored text, and deterministic regeneration.
One released consumer, still tool-neutral
The optional DocFence 0.31.0 adapter reaches a strict 32/32 score using public aggregate evidence: template_style_update_on_open_inventory_changed, an enabled-count transition from zero to one, a disabled-count transition from one to zero, and stable attached-template anchor and relationship counts. It never consumes the target, relationship identifier, Settings path, raw attribute value, or fingerprint.
Hosted CI passed on Python 3.11, 3.12, and 3.13 for both the release commit and tag. Clean wheel and source-distribution installs validate the bundled 32-case corpus, and a clean combined install reaches complete public DocFence adapter coverage. The public Hugging Face dataset mirror was downloaded, byte-compared with the generated tree, and validated directly after publication.
Use the release
python -m pip install https://github.com/SybilGambleyyu/document-change-benchmark/releases/download/v0.21.0/document_change_benchmark-0.21.0-py3-none-any.whl
dcab validate
dcab docfence-observations --executable docfence --output observations.json
dcab score --observations observations.json --strict
DCAB retains fixture schema version 1 because its public truth and observation envelopes are unchanged. This release adds one exact static-review fact—not a template loader, style resolver, document client, renderer, source retriever, or universal policy claim. The MIT-licensed builder, fixtures, verifier, release artifacts, and research notes are available on GitHub.