DEV Community

SybilGambleyyu
SybilGambleyyu

Posted on • Originally published at sybilgambleyyu.github.io

A Word frame source can change outside the document body

Word files have more than a body. A document can carry a frameset in its Web Settings part, and each frame can name a source through an external relationship owned by that part.

That creates a review boundary that a body-text diff misses completely: ordinary stored text can stay identical while a stored external document dependency is retargeted.

Document Change Assurance Benchmark (DCAB) 0.14.0 adds a reproducible case for it: external.frameset_source_target_retargeted.

The baseline and candidate keep their package members, stored w:t values, content types, main-document-to-Web-Settings relationship, root frameset layout, frame size/name, and source anchor fixed. The sole semantic change is one private target in word/_rels/webSettings.xml.rels.

word/document.xml.rels
  rIdWebSettings --internal--> word/webSettings.xml

word/webSettings.xml
  w:frameset
    w:frame
      w:sourceFileName r:id="rIdFrameSource"

word/_rels/webSettings.xml.rels
  rIdFrameSource --frame, External--> private source
Enter fullscreen mode Exit fullscreen mode

Microsoft's w:sourceFileName documentation places the source relationship in Web Settings and requires the standard frame relationship type. The OOXML framesets contract specifies that frame targets are external.

The benchmark is deliberately static. It neither opens Word nor renders a frame, resolves or retrieves a source, imports a document, authenticates to a target, or makes a client-display claim. Its public truth records a target-free fact category and a reference review convention; destination values are never published.

The optional DocFence adapter maps an aggregate external_document_dependency_inventory_changed transition without exposing source values, relationship IDs, paths, or ordinary document text. DCAB's hosted CI passes on Python 3.11–3.13, its standard reader opens all 48 .docx fixtures, and its lower-level OPC reader opens all 50 packages. Fresh release installs and the public Hugging Face dataset mirror also validate the 25-case corpus.

Install the release directly:

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

Read the full release note, including the fixed-topology guarantees and evidence trail: A Word frame source can change outside the document body.

Top comments (0)