Skip to content

Releases: SybilGambleyyu/formulafence

FormulaFence 0.11.0

Choose a tag to compare

@SybilGambleyyu SybilGambleyyu released this 24 Jul 09:20

FormulaFence 0.11.0 improves static review of Excel explicit implicit intersection.

  • Traces the selected cell for direct static @A1:A3 and persisted _xlfn.SINGLE(A1:A3) forms when the formula location is unambiguous.
  • Profiles explicit intersection, reports new usage as FF017, and adds the no_new_implicit_intersections policy control (FFP017).
  • Normalizes display and OOXML spellings of dynamic-array compatibility functions in formula fingerprints.

Validated with 59 tests, lint, a clean wheel install, an XlsxWriter interoperability fixture, and GitHub CI on commit d6e626b.

FormulaFence 0.10.0

Choose a tag to compare

@SybilGambleyyu SybilGambleyyu released this 24 Jul 08:40

Dynamic-array spill coverage

  • Trace the static anchor behind direct internal A1# references and OOXML _xlfn.ANCHORARRAY(A1) calls.
  • Inventory every spill consumer and make new instances visible as FF015 / no_new_spill_references; dynamic extent and blocking cells remain explicit limits.
  • Surface formula-tokenization failures as FF016 / no_new_tokenization_failures instead of silently omitting their dependency graph.
  • Keep spill-bearing formula-defined names unresolved at callers so partial dynamic behavior cannot be hidden behind a name.

Validated by the hosted CI run for commit 5462c77 and clean wheel installs against literal and XlsxWriter-generated spill workbooks.

FormulaFence 0.9.0

Choose a tag to compare

@SybilGambleyyu SybilGambleyyu released this 24 Jul 08:12

FormulaFence 0.9.0 adds conservative static dependency expansion for workbook- and worksheet-local named LAMBDA calls.

  • Resolves nested named LAMBDAs and formula-defined names that call them when their full definitions are static and internal.
  • Preserves workbook and worksheet-local name scope, including qualified local calls.
  • Supports OOXML formula definitions without a leading equals sign plus _xlfn.LAMBDA, _xlpm., and _xlop. serialization.
  • Leaves dynamic, recursive, relative, external, 3-D, and tokenizer-unsupported named LAMBDAs as explicit unresolved coverage at call sites.

Validation: 50 tests passed; hosted CI passed; a clean installed wheel profiled the public Vertex42 LAMBDA Library (121 defined names, 116 named LAMBDAs) and resolved safe LAMBDA calls while preserving unsupported definitions as coverage notes.

Wheel SHA-256: 1dcc88f090a08c271257e0442c3abf9fffd50b210f0d84a7d3b2b79930749fe2.

FormulaFence 0.8.0

Choose a tag to compare

@SybilGambleyyu SybilGambleyyu released this 24 Jul 07:38

FormulaFence 0.8.0 preserves static dependency paths through modern Excel lexical scope.

  • Recognizes ordinary LET bindings as local variables instead of unresolved workbook names.
  • Recognizes inline LAMBDA parameters, including nested lambdas supplied to higher-order functions such as REDUCE.
  • Retains surrounding A1, named-range, formula-defined-name, and supported table dependencies in the graph.
  • Handles nested shadowing and OOXML _xlfn. function prefixes conservatively.
  • Keeps spilled ranges and named LAMBDA/custom-function calls outside the static subset rather than inferring dependencies.

Validation: 45 tests, Ruff, fresh wheel install and CLI impact tracing, two public-workbook regression profiles, and GitHub Actions CI all pass.

FormulaFence 0.7.0

Choose a tag to compare

@SybilGambleyyu SybilGambleyyu released this 24 Jul 07:17

FormulaFence 0.7.0 resolves the static dependency paths hidden behind formula-defined Excel names.

  • Expands nested workbook-level and sheet-local formula-defined names when their full definition is statically visible and internal.
  • Recognizes named constants without inventing cell dependencies.
  • Supports the existing safe static table subset inside formula-defined names.
  • Keeps relative, cyclic, external, dynamic, 3-D-in-name, and tokenizer-unsupported definitions unresolved instead of guessing.
  • Continues to report changes to a defined-name formula as the existing FF008 workbook-control finding.

Validation: 39 tests, Ruff, a fresh wheel install and CLI impact check, a public 4,228-formula workbook re-profile, and GitHub Actions CI all pass.

FormulaFence 0.6.0

Choose a tag to compare

@SybilGambleyyu SybilGambleyyu released this 24 Jul 06:55

FormulaFence 0.6.0 expands static internal Excel 3-D A1 references such as Jan:Mar!B2 across the real workbook tab span.

  • Adds correct dependency and impact tracing for direct static 3-D references, without inventing a Jan:Mar pseudo-sheet.
  • Profiles 3-D formula cells and reports FF014 when an unchanged formula changes scope because worksheet order or membership changes.
  • Adds no_3d_reference_scope_changes for CI policy enforcement (FFP014).
  • Keeps external, malformed, endpoint-missing, and non-A1 3-D forms explicit rather than guessing.
  • Corrects the runtime version report and locks it to package metadata with a regression test.

Validation: 33 tests, Ruff, an isolated wheel install, and GitHub Actions CI all pass.

FormulaFence v0.5.0

Choose a tag to compare

@SybilGambleyyu SybilGambleyyu released this 24 Jul 06:29

Current-row table references

FormulaFence now traces conservative Excel table references that are scoped to the formula row. It resolves unqualified calculated-column forms such as [@[Sales Amount]] and [Sales Amount] only inside a table data cell, plus qualified Sales[@Amount] / Sales[[#This Row],[Amount]:[Rate]] forms when the formula is on that named table's data row.

Header, totals, cross-sheet, ambiguous, malformed, and complex bracket-escape cases remain explicit unresolved-reference coverage notes rather than guessed dependency edges.

Validation: 26 tests pass, lint is clean, GitHub CI passed, the wheel was installed into a fresh virtual environment, and the public Excel Easy structured-reference workbook was re-profiled with zero unresolved tokens.

FormulaFence 0.4.0

Choose a tag to compare

@SybilGambleyyu SybilGambleyyu released this 24 Jul 05:53

FormulaFence 0.4.0 adds trustworthy static Excel-table coverage.

  • Resolves fully qualified table names, static columns or contiguous column ranges, and #All/#Data/#Headers/#Totals regions.
  • Profiles table metadata and emits FF013 when a table definition changes.
  • Adds no_table_definition_changes (FFP013) for policies that need to lock table semantics.
  • Keeps this-row (@) and complex table syntax visible as coverage gaps instead of guessing.

Wheel SHA-256 is included in SHA256SUMS.txt.

FormulaFence 0.3.0

Choose a tag to compare

@SybilGambleyyu SybilGambleyyu released this 24 Jul 05:35

FormulaFence 0.3.0 makes static-analysis coverage explicit.

  • Resolves ordinary workbook and sheet-local static named ranges into dependency paths.
  • Profiles and diffs expose new unresolved formula references and dynamic INDIRECT/OFFSET use (FF011/FF012).
  • Adds opt-in policy controls to block either class of new coverage gap.

Wheel SHA-256 is included in SHA256SUMS.txt.

FormulaFence v0.2.0

Choose a tag to compare

@SybilGambleyyu SybilGambleyyu released this 24 Jul 05:16

Explainability release.\n\n- Adds deterministic shortest dependency-path samples to change reports\n- Carries path evidence into FormulaFence findings, policy failures, and SARIF\n- Improves review context for high-impact workbook changes