Prose in a custom XML part
A customXml/ part carries text the package ships and nothing renders as document body.
How the text is hidden
OOXML lets a package carry arbitrary XML parts. Word uses them for bibliography sources, cover-page abstracts and backstage metadata. Element names are whatever the author chooses, so prose in an <Abstract> element matches none of Word's own text elements and is drawn by nothing.
Why a model still reads it
Anything walking the package reads these parts. They were invisible to both halves of this engine before D6 shipped: the uninspected-part scan looks for Word's own text elements, so a part full of prose under custom element names matched nothing and was silently absent.
What we do about it
Every archive entry matching customXml/itemN.xml is inflated, its tags removed and its whitespace collapsed. A part whose remaining text clears a short minimum length defined in the parser becomes one run with a customXmlPart flag and the reason non-rendered-part. The rule requires both, at informational, action flag — recorded on every document, shouted about on none, and instruction-shaped content still escalates.
How often it fires
25% of open-data portal DOCX — 200 real government publications, written in Word (genre: government, NOT contracts), measured 2026-08-23.
This is an alert-volume number and nothing else. It says how often the alarm sounds on documents as found — not how often it is right, and not whether what it found was harmless. Documents as found may themselves carry concealment. Read it against the population named above rather than as a property of documents in general.
Check your own file
Three commands: a key, credit, a verdict.
Start with the API