Release note · August 1, 2026

When a saved Excel spill error looks like #VALUE!

By SybilGambleyyu · FormulaFence 0.218.0

Dynamic-array formulas are useful precisely because one formula can fill a changing result range. They also create a review problem: the workbook may retain Excel's last saved outcome, while its next calculation can be different. Microsoft's dynamic-array guidance describes the spill behavior; its spill-error guidance shows why a stored spill outcome merits review, not a claim about the current workbook state.

FormulaFence 0.218.0 adds FF116: a high-severity finding for a saved dynamic-array spill outcome whose full SpreadsheetML marker is present. The subtlety is important: compatible writers can store this outcome as a typed saved value error rather than as a literal #SPILL! string. Matching the string alone would be both unreliable and much too broad.

A deliberately complete marker

FF116 fires only when one formula cell has all of the following: a typed saved error, array-formula state, dynamic-array cell metadata, a value-metadata binding, and the canonical package relationship and content-type declarations that make that metadata meaningful. Microsoft's SpreadsheetML metadata specification defines the package-level machinery; FormulaFence requires the parts to agree instead of treating a lone cell attribute or error value as proof.

That boundary gives a reviewer useful evidence without pretending to know more. The rule does not evaluate formulas, resolve the obstruction, infer the spill range, preserve the error value, or predict what recalculation will do. It reports only a location and saved_formula_result as the evidence scope. A complete FF116 finding also suppresses the generic saved-value-error finding at that same location, so a single saved outcome does not become duplicate CI noise.

Evidence without workbook disclosure

FormulaFence keeps formula text, cached values, sheet names, external links, metadata indices, and workbook inputs out of JSON, Markdown, and SARIF findings. That matters for spreadsheet review artifacts: a check should support a reviewer without becoming another channel that reproduces sensitive workbook content.

A privacy-preserving replay over 5,458 accessible workbook artifacts found 63 complete markers across three workbooks. The replay was aggregate-only: no source paths, formulas, cached values, or workbook identities were emitted. Each complete marker produced FF116, with no duplicate generic saved-value finding and no spurious rich-data warning. The validation record documents the exact boundary, corpus method, and limitations.

Use the release

python -m pip install https://github.com/SybilGambleyyu/formulafence/releases/download/v0.218.0/formulafence-0.218.0-py3-none-any.whl

The release passed 1,551 tests, hosted CI's test and action-contract jobs, package metadata checks, reproducible wheel and source-distribution builds, and clean-install CLI checks. FormulaFence is MIT-licensed and available on GitHub. For the broader spreadsheet CI approach, see Spreadsheet changes that can pass CI.