VML embedded-OLE review boundary
DocFence 0.27.0 adds a privacy-safe inventory for direct legacy Office VML
o:OLEObject Type="Embed" markers in supported Word stories.
require_no_word_vml_embedded_ole_objects(DFP067) fails a candidate that
contains stored VML embedded-OLE markup.no_word_vml_embedded_ole_object_changes(DFP068) protects an approved
embedded-OLE baseline.- Public output exposes only aggregate marker/story and backing-relationship
classes: standard OLE relationships with stored internal or external target
modes, unsupported relationships, and markers with no optionalr:id. - Program, shape, object, relationship, target, update, field-code, markup,
story-path, and fingerprint data stays private. Same-count marker or target
rewrites remain review-visible; unchanged-semantics relationship-ID renumbering
stays quiet.
The boundary is deliberately separate from VML Type="Link", WordprocessingML
w:objectEmbed/w:objectLink, VML image and shape links, fields, and generic
embedded OLE/package/control relationship and payload inventories. It scans
stored markers only: DocFence does not select a Markup Compatibility branch,
retrieve or open an object, decode its payload, activate it, render it, or make
a client-behavior claim.
Validation includes controlled regression coverage, a public Open XML SDK OLE
fixture, and five public docx4j OLE fixtures. Pinned corpus scans found direct
markers in 22 of 503 readable Open XML SDK package candidates and five of 141
docx4j Word packages; those test assets are evidence of stored-package coverage,
not a prevalence or runtime-interoperability claim.
Checks passed on Python 3.11 and 3.13, including Ruff, 53 tests, distribution
build, Twine metadata validation, a fresh-wheel smoke test against the public
Open XML SDK fixture, and a byte-identical rebuild from this annotated release
tag.