Release note · August 3, 2026
A stored Word field-update request deserves review
A consequential WordprocessingML change need not alter text, a relationship target, or a visible page. A document can move from a stored disabled field-recalculation-on-open setting to an enabled one while its package member set and stored text remain fixed. A static package-review tool should be able to name that exact transition without pretending to run the document.
Document Change Assurance Benchmark (DCAB) 0.20.0 adds its thirty-first deterministic pair: review.field_recalculation_on_open_enabled. The baseline stores w:updateFields w:val="false"; the candidate stores w:updateFields w:val="true". Only word/settings.xml changes.
A direct setting with an intentionally narrow boundary
Microsoft documents UpdateFieldsOnOpen as the WordprocessingML request to automatically recalculate fields from field codes when a supporting application opens the document. The benchmark models exactly the stored direct leaf—not a client run or an assertion about whether any application will honor it.
word/settings.xml only changed package member
w:updateFields w:val="false" baseline direct leaf
w:updateFields w:val="true" candidate direct leaf
word/_rels/settings.xml.rels absent on both sides
The pair retains the same package members and the same stored w:t sequence. It adds no Settings relationship part, source target, external link, macro, or payload. It does not open Word, evaluate a field, calculate a field result, resolve a field instruction, access a data source, or claim a runtime effect.
A public fact without setting-value disclosure
The target-free oracle reports one fact with two stable properties:
{
"kind": "field_recalculation_on_open_enabled",
"source": "word_settings"
}
It excludes raw Setting XML, Settings-part paths, relationship information, field instructions, results, source identifiers, and private fingerprints. Independent structural validation checks the exact direct-leaf forms, one-member change boundary, absence of a Settings relationship part, stable package topology, unchanged stored text, deterministic regeneration, and the absence of setting material from public truth.
One released consumer, still a tool-neutral case
The optional DocFence 0.30.0 adapter reaches a strict 31/31 score from aggregate evidence: field_update_on_open_inventory_changed, with an enabled-count transition from zero to one and a disabled-count transition from one to zero. It does not consume a Settings path, raw attribute value, field instruction, or fingerprint.
Hosted CI passed on Python 3.11, 3.12, and 3.13 for the main commit and release tag. Clean wheel and source-distribution installs validate the bundled 31-case corpus, and a clean combined install reaches complete DocFence adapter coverage. The public Hugging Face dataset mirror was verified against the generated fixture tree and validated directly after download.
Use the release
python -m pip install https://github.com/SybilGambleyyu/document-change-benchmark/releases/download/v0.20.0/document_change_benchmark-0.20.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 the public truth and observation envelopes are unchanged. This release adds one exact static-review fact—not a field evaluator, document client, renderer, source resolver, or universal policy claim.
The MIT-licensed builder, generated fixtures, verifier, release artifacts, and research notes are available on GitHub. The corpus is also mirrored as a public Hugging Face dataset.