DEV Community

SybilGambleyyu
SybilGambleyyu

Posted on • Originally published at sybilgambleyyu.github.io

A stored Word field-update request is a review boundary

A stored Word field-update request is a review boundary

A Word document can store a request that its field results be recalculated when
it is opened by an application that supports the setting. That request can
change while visible document text and package topology remain stable. It
belongs in package review, but it does not turn a static reviewer into a field
evaluator or a predictor of client behavior.

DocFence 0.30.0
adds a private-by-default inventory for direct w:updateFields settings. It
provides an auditable CI signal for a narrow stored-state boundary without
exposing Settings paths, raw XML, or private fingerprints in public output.

A stored request, not a field run

Microsoft documents
UpdateFieldsOnOpen
as the WordprocessingML setting for automatically recalculating fields from
field codes when a supporting application opens a document. The direct Settings
leaf matters to review; it does not prove that a particular application will
honor it, identify a source, retrieve data, or change a field result.

word/settings.xml
  w:updateFields w:val="true"    stored enabled request

No relationship target is required for this direct setting.
Enter fullscreen mode Exit fullscreen mode

DocFence accepts the strict CT_OnOff leaf form in Transitional and Strict
Word namespaces: no child markup or nonblank text, at most one
Word-namespace w:val attribute, and a supported on/off spelling. The
omitted value is the enabled form. Malformed and duplicate direct leaves are
rejected rather than guessed about.

It reads the stored setting only. It never opens Word, evaluates a field,
recalculates a result, resolves an instruction, follows a link, accesses a
source, runs a macro, or claims runtime behavior.

Aggregate evidence can still protect the boundary

Public JSON, Markdown, and SARIF expose two counts:
field_update_on_open_enabled_setting_count and
field_update_on_open_disabled_setting_count. Settings paths, raw values,
and semantic fingerprints remain private. Equivalent enabled spellings stay
quiet at the inventory layer; an enabled-to-disabled change remains visible as
a private semantic transition.

rules:
  require_no_field_updates_on_open: true
Enter fullscreen mode Exit fullscreen mode

That candidate-state gate emits DFP073 only for an enabled setting. A
known, intentional setting can instead be protected as a baseline:

rules:
  no_field_update_on_open_changes: true
Enter fullscreen mode Exit fullscreen mode

DFP074 flags a material inventory transition. These rules do not call a
field safe or unsafe; they make a stored configuration boundary reviewable.

Evidence, not client execution

The 56-test release suite covers absent, implicit, enabled, disabled, and
Strict forms; malformed leaf rejection; equivalent-spelling stability; privacy
redaction; policy behavior; and JSON, Markdown, and SARIF output. Hosted CI
passed for the release commit and tag, and fresh wheel and source archive
installs passed smoke checks.

DCAB 0.20.0
adds the matching deterministic fixture. Its optional DocFence adapter consumes
aggregate evidence only—not a Settings path, raw value, field instruction, or
fingerprint.

python -m pip install https://github.com/SybilGambleyyu/docfence/releases/download/v0.30.0/docfence-0.30.0-py3-none-any.whl

docfence profile candidate.docx --format markdown
docfence check approved.docx candidate.docx --policy docfence.yml --format sarif --output docfence.sarif
Enter fullscreen mode Exit fullscreen mode

Read the canonical release note
for the full evidence contract, policy details, and limits.

Top comments (0)