Release note · August 3, 2026

A comment can be marked done without changing Word text

By SybilGambleyyu · Document Change Assurance Benchmark 0.12.0

Word review data can change in a package part that ordinary text comparison never sees. A comment can retain its anchor, ordinary comment content, package topology, and every stored w:t value while its persisted done state changes. That is useful static review evidence—but it is not proof of a particular Word UI, identity, or collaboration workflow.

Document Change Assurance Benchmark (DCAB) 0.12.0 adds its twenty-third deterministic pair: review.modern_comment_done_state_changed. Both packages retain the same members, classic comment, document anchor, matching paragraph identifier, internal relationships, content types, and Word text. Only word/commentsExtended.xml changes: one Office 2013 w15:commentEx record moves from its explicit stored done="0" value to done="1".

Stored comment metadata is a distinct review surface

Microsoft's commentsExtended part documentation describes it as additional information for comments represented in the classic comments part. Its w15:commentEx schema reference says the construct is available in Office 2013 and later, links its paraId to the associated comment's last paragraph, and defines done="1" as a user indication that the comment is done.

Those definitions also set the limit of the fixture. DCAB fixes exactly one compact classic-comment topology and one matching extension record. It does not open Word, render or update comments, resolve a thread, fetch or synchronize anything, authenticate a person, inspect a service account, or assert how a client displays a done state. It tests only one direct stored metadata boundary.

One metadata-state boundary

The independent verifier checks the classic comment, range start/end/reference anchor, Office 2010 paragraph identifier, internal relationships, content-type overrides, Office 2013 extension root, and exact one-member boundary. The standard python-docx reader opens all 44 .docx fixtures, and its lower-level OPC reader opens all 46 packages.

The optional local DocFence 0.27.0 adapter maps aggregate modern_comment_metadata_inventory_changed evidence. Both sides retain one classic comment, one commentsExtended part, one extension record, and zero people, thread, reaction, comments-ID, and extensible-comment records. Only the aggregate resolved-comment count changes from zero to one. The adapter uses counts and private local fingerprints without disclosing the fixture's text, author metadata, identifiers, or raw state serialization.

The release passed the full 19-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 23-case corpus.

Use the release

python -m pip install https://github.com/SybilGambleyyu/document-change-benchmark/releases/download/v0.12.0/document_change_benchmark-0.12.0-py3-none-any.whl
dcab validate
dcab docfence-observations --executable docfence --output observations.json
dcab score --observations observations.json --strict

DCAB 0.12.0 retains fixture schema version 1 because the public truth and observation envelopes are unchanged; it extends the corpus from 22 to 23 cases. It publishes a narrow static review fact, not a visual-rendering, identity, workflow, 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.