Skip to content

Compatibility Model ​

Formulon treats compatibility as a measured property. It does not claim generic Excel behavior; it targets named profiles backed by generated oracle data. That gives the project two concrete things to do — capture oracle data per profile, and surface accepted divergences explicitly.

Glossary: measured compatibility

A compatibility claim that points at a profile and a body of oracle data that proves it. "Compatible with win-365-ja_JP" means we ran this on Excel and captured the values. "Excel-compatible" without a profile is intentionally not used.

Capturing a profile is a one-way pipeline from a real Excel build to a reusable dataset:

Excel builde.g. Win 365 ja-JPOracle datasetcapturedCompatibility profilewin-365-ja_JP —verifiedExcel builde.g. Win 365 ja-JPOracle datasetcapturedCompatibility profilewin-365-ja_JP — verified

Every recalculation then checks itself against that same oracle data:

InputsCompare vs oracle dataWorkbookCompatibility profileFormulon engineCalculated valuesNo divergenceprofile claim holdsTracked divergencereason + last-verified buildUntracked divergencebug — fix or documentInputsCompare vs oracle dataWorkbookCompatibility profileFormulon engineCalculated valuesNo divergenceprofile claim holdsTracked divergencereason + last-verified buildUntracked divergencebug — fix or document

Profiles ​

The main profile today is win-365-ja_JP. The repository also tracks Mac Excel 365 ja-JP data where that data is available. English-locale profiles remain hidden until they have their own locale-specific oracle coverage.

See Locale profiles for the public list and pinning behavior.

Divergences ​

Some differences are inevitable:

  • floating-point drift between platforms,
  • volatile snapshot mismatches,
  • undocumented Excel behavior whose contract is not stable across builds,
  • deliberate fixes for cases where reproducing Excel would make the engine less predictable (silent overflow, silent type coercion in specific corner cases).

Each accepted divergence carries a reason and a last-verified Excel build so future maintainers know whether the divergence is still intentional or whether Excel has since fixed the underlying behavior.

Practical rule ​

DoingShould
Applications using FormulonPersist the profile used for calculation
TestsState the profile they expect and pin to a Formulon version
DocumentationAvoid unqualified claims like "Excel-compatible" when a feature is only verified for one profile
Issue reportsInclude the profile, the Formulon version, the Excel build of the oracle, and a minimal reproducing workbook