DocFence 0.18.0
Direct WordprocessingML hyperlink review
DocFence 0.18.0 adds a privacy-safe inventory for direct w:hyperlink markup. It is separate from stored HYPERLINK field codes and from broad relationship totals, so a residual hyperlink relationship is not confused with a direct link element.
DFP049(require_no_word_hyperlink_markup) rejects a candidate with direct hyperlink markup.DFP050(no_word_hyperlink_markup_changes) protects a controlled direct-markup baseline.- Reports expose aggregate direct-element/story counts, relationship-backed counts, external/internal/unsupported relationship classes, anchor-only and current-document-start forms, and anchor attributes shadowed by an
r:idrelationship. r:idprecedence overw:anchoris represented without exposing either value. Targets, anchors, locations, tooltips, frames, history, display text, relationship IDs, story paths, and fingerprints remain private.
The inventory treats relationship mode as stored package evidence only. It does not resolve, retrieve, follow, validate, evaluate, or render links, and it makes no reachability or safety claim.
Validation included 44 passing tests, Ruff, reproducible wheel/source builds from the tagged commit, Twine checks, green Python 3.11/3.13/package CI, and an isolated-install profile of an independent public hyperlink fixture.