A Word field can change across three XML runs
A Word field can retain its stored result and every ordinary text value while the source instruction changes. That is especially easy to miss when the instruction is not one XML attribute, but a sequence of field-code runs.
Document Change Assurance Benchmark 0.13.0 adds a deterministic pair for that boundary: external.complex_include_text_field_target_retargeted. It is the twenty-fourth paired WordprocessingML case in DCAB.
Both packages retain the same members, stored w:t values, complete field shape, and stored result. Only a private external source fragment changes in word/document.xml.
Field code needs context and reconstruction
Microsoft's w:fldChar documentation describes the begin and end markers that delimit a complex field and its optional separator. Its w:instrText documentation adds the key constraint: instruction text is field code only when it appears in a complex field's instruction portion. Outside that context, it is ordinary text.
The new fixture fixes one complete INCLUDETEXT field with this shape:
begin marker
instrText: " INCLUDE"
instrText: "TEXT "…"
instrText: "…" "
separate marker
stored result: "DCAB include-text field result"
end marker
The keyword itself is split across the first two preserved-whitespace instruction runs. No individual node contains INCLUDETEXT. A correct static scanner has to recognize the marker sequence, select the instruction portion, and concatenate the field-code runs in order.
That is different from looking for a substring in each run or comparing a simple-field attribute. It is a small fixture, but it tests a real parser boundary.
This is stored-package review, not Word behavior
DCAB does not resolve or import a source, open Word, update or evaluate a field, render a result, follow a target, or claim any client processes the instruction. The pair states one narrow stored fact: a complete complex external-field source changed while its result and ordinary Word text did not.
Its generator and independent verifier require the exact marker sequence, three preserved-whitespace fragments, stable result text, stable package-member set, and one declared changed member. The public truth.json names only a target-free fact category and review convention.
The optional DocFence 0.27.0 adapter reconstructs the complete complex instruction and maps the change to aggregate external_field_inventory_changed evidence. It keeps the source, fragments, and document text out of DCAB observations.
A tested release, with explicit limits
The release passed hosted CI on Python 3.11, 3.12, and 3.13, including a clean DocFence adapter job. Fresh wheel and source-distribution installs, the uploaded GitHub artifacts, and a fresh Hugging Face dataset snapshot each validate the 24-case corpus.
DCAB 0.13.0 keeps fixture schema version 1 because its public truth and observation envelopes are unchanged. It adds a targeted reconstruction test—not a renderer, a field evaluator, or a runtime security claim.
Read the full canonical release note for the package contract and install command. The source generator, fixtures, verifier, and release artifacts are MIT-licensed on GitHub.
Top comments (0)