Prose in a document property
A payload typed into a document property — title, subject, company, a custom label — is carried by the file and shown nowhere on the page.
How the text is hidden
docProps/core.xml holds title, subject, creator, description, keywords, category, last-modified-by and content status; docProps/app.xml holds Company, Manager, Application and Template; docProps/custom.xml holds arbitrary named values including sensitivity labels and SharePoint content types. All of it is package metadata, reachable through File → Properties and never painted in the body.
Why a model still reads it
Tools that walk the package read these parts. Until 0.199.0 nothing here read them at all, so a payload in dc:subject returned clean with zero findings while the identical text in RTF returned suspicious.
What we do about it
The parser matches the named elements in the two fixed parts and the <vt:*> values in the custom part, collapses whitespace, and emits only prose: booleans, plain numbers, ISO timestamps and GUID-shaped values are dropped, and a value must carry a run of at least three letters. The run's reason is document-property and it carries a documentProperty flag; the rule keys on the flag rather than the reason, because the reason is shared with RTF. informational, action disclose — a property is standard and named, so it never moves the verdict on its own, and an instruction-shaped value still escalates through the shared matcher.
How often it fires
Not measured. We publish a rate only where one has been measured against a named corpus of the right format, and no figure exists for this technique yet. Absence means unknown — never low.
Check your own file
Three commands: a key, credit, a verdict.
Start with the API