Release note · August 3, 2026

A date system change is a workbook-wide change

By SybilGambleyyu · FormulaFence 0.220.0

A workbook can keep every stored numeric cell and every formula exactly the same while changing how date serials are interpreted. That is an easy change to miss in a cell-by-cell review, and an uncomfortable one to discover after a report moves by years.

FormulaFence 0.220.0 adds FF117, a high-severity finding for a normalized change to the workbook's serial-date controls. It watches workbookPr/@date1904 and @dateCompatibility directly in raw OOXML, before ordinary workbook readers turn a date-formatted number into an application value.

Watch the control, not a guessed outcome

Microsoft's WorkbookProperties documentation defines the two controls: date1904 selects the 1900 or 1904 compatibility base, while dateCompatibility determines whether the compatibility base is in use. The documented defaults matter too: absent date1904 is false and absent dateCompatibility is true. FormulaFence normalizes those defaults, so an omitted declaration and an explicit documented default do not create CI noise.

That is deliberately not a calculation engine. FormulaFence does not evaluate a formula, convert a serial into a date, predict a client display, or declare that a saved formula result is current. It reports the stored control transition so a reviewer can decide what the change means for the workbook's real consumers.

Enough evidence for CI, without copying the model

Profiles and FF117 details expose only normalized Boolean state, whether dateCompatibility was explicitly declared, and an unrecognized-control count. Invalid, duplicate, or unreadable metadata becomes an explicit coverage warning rather than a forced epoch choice. The narrow XLSB profile path also exposes its core date-1904 bit, while continuing to mark the rest of the binary workbook surface as unassessed.

Teams that want a fail-closed boundary can add one readable policy rule:

version: 1
rules:
  no_workbook_date_system_changes: true

That turns the observed FF117 into the policy violation FFP117. It is useful when a date-base change needs an intentional review, even if a workbook does not happen to contain a date-formatted cell in the immediate diff.

A deliberately constrained test

The release fixture holds a raw numeric serial, its date number format, an ordinary formula consumer, and a downstream dashboard consumer fixed. The candidate changes only xl/workbook.xml: date1904 moves from false to true while dateCompatibility stays true. The regression proves the global finding appears alongside any ordinary reader-visible difference. Separate cases prove that default spelling stays quiet, a compatibility-mode change is detected on its own, and malformed controls stay visibly unassessed.

The release passed 1,589 tests, hosted CI, package metadata checks, and fresh wheel and source-distribution installs. The validation record has the exact boundary and test evidence.

Use the release

python -m pip install https://github.com/SybilGambleyyu/formulafence/releases/download/v0.220.0/formulafence-0.220.0-py3-none-any.whl
formulafence check approved.xlsx candidate.xlsx --policy formulafence.yml

FormulaFence is MIT-licensed and available on GitHub. For the broader change-assurance workflow, see Spreadsheet changes that can pass CI.