Rule Reference
Individually addressable reference pages for each structural rule in the FMAE rule engine: purpose, detection logic, severity, and remediation.
-
R001 — Hardcoded Cells
R001 (Hardcoded Cells) flags a formula cell that has been overridden by a typed numeric value, in a row where the surrounding cells otherwise share a clear, dominant formula pattern. It is critical severity, carries the highest weight of any FMAE rule (15.0), and is one of five critical-override rules under the SM-2.0 scoring methodology — meaning a single R001 finding caps the model's overall letter grade below A or B regardless of its numeric score.
-
R002 — Broken Links
R002 (Broken Links) flags a formula cell whose reference has broken — pointing at a deleted named range, a deleted worksheet, a reference-error cell, or an external workbook link the parser could not confirm resolves. It is critical severity and one of five critical-override rules under the SM-2.0 scoring methodology, meaning a single R002 finding caps the model's overall letter grade below A or B regardless of its numeric score.
-
R003 — Circular References
R003 (Circular References) evaluates every circular dependency region the dependency-graph stage detects and classifies it along two independent axes — whether iterative calculation is enabled and configured adequately, and whether the sheets involved match a recognized financial calculation pattern such as debt sizing or an equity waterfall. A circularity with iterative calculation disabled is always flagged; one matching a recognized pattern with adequate settings is not triggered at all. High severity, and not one of the five critical-override rules.
-
R004 — Formula Inconsistency
R004 (Formula Inconsistency) flags a formula cell whose logic differs from the dominant pattern the rest of its row otherwise follows — an extra term, a different function, or a shifted reference. It is the general case of R001, catching a different formula rather than a typed constant, and deliberately excludes hardcoded cells from its own sample so the two rules never double-count the same cell. R004 is critical severity and one of five critical-override rules under the SM-2.0 scoring methodology.
-
R005 — Volatile Functions
R005 (Volatile Functions) flags cells using a volatile Excel function — one that recalculates on every workbook change regardless of whether its own inputs changed. Rather than a single fixed severity, R005 derives severity per finding from the function's likely purpose (a date stamp, a dynamic range, a randomization, or presentation-only use), how many cells downstream depend on it, and whether that downstream reach touches a critical output such as an IRR, NPV, or cash flow sheet.
-
R006 — Propagated Errors
R006 (Propagated Errors) flags any cell — formula or hardcoded — whose last calculated value is an Excel error (such as #REF!, #VALUE!, or #DIV/0!). Because an error value is a deterministic, unambiguous fact already present in the workbook, every R006 finding carries high confidence. R006 is critical severity and one of five critical-override rules under the SM-2.0 scoring methodology, meaning a single R006 finding caps the model's overall letter grade below A or B regardless of its numeric score.
-
R007 — Manual Calculation Mode
R007 (Manual Calculation Mode) is a workbook-level check that fires at most once per audit, whenever the workbook's calculation mode is not set to fully automatic. A model set to manual calculation mode does not recalculate when its inputs change, meaning the values a reader sees may be stale relative to the model's actual current inputs unless the file was manually recalculated (F9) immediately before saving.
-
R008 — Hardcoded Dates
R008 (Hardcoded Dates) targets the same structural risk as R001 (Hardcoded Cells), specific to date values rather than numeric constants — a date typed directly into the formula chain instead of referenced from a controlled input cell. As of engine version 2.1.0, R008's own source code documents a known limitation honestly — the parsing stage does not yet mark date-valued hardcoded cells with the value type this rule requires, so R008 currently produces zero findings against real workbooks even though its detection logic is implemented correctly against the engine's data model.
-
R009 — Unresolved External Precedents
R009 (Unresolved External Precedents) flags a formula cell that references one or more external workbooks the audit could not resolve — for example, because the linked file was not supplied alongside the model being audited. It is distinct from R002 (Broken Links), which reads a separately computed list of broken references; R009 instead walks each formula's own recorded external precedents directly.
-
R010 — High Fan-In Hardcodes
R010 (High Fan-In Hardcodes) targets a specific, higher-stakes case of a hardcoded value — one whose downstream reach is unusually wide. Rather than a fixed severity, R010 classifies the worksheet the cell sits on, the cell's local context (is it more likely an intended input, a lookup value, an interface control, or an embedded calculation constant), and how many downstream cells and worksheets the value's influence reaches, and derives severity and remediation guidance from that combined picture.
-
R011 — Cross-Sheet Pattern Drift
R011 (Cross-Sheet Pattern Drift) is the cross-sheet counterpart to R004's within-row consistency check. It groups formula cells at the same address across sheets that share the same structural classification — for example, a set of annual period tabs that are each a self-contained copy of the same template — and flags any cell whose formula deviates from the pattern the group otherwise shares. Sheets that reference each other directly (a Revenue sheet feeding a P&L sheet, for instance) are functionally dependent rather than structural copies, and are excluded from comparison entirely.
-
R012 — Hardcoded Rate Constant
R012 (Hardcoded Rate Constant) flags a numeric rate or percentage literal embedded directly within a formula, such as a growth rate written as a percentage operator or a decimal rate literal within a recognized range. Distinct from R001, which catches a hardcode overriding a row's formula pattern, R012 evaluates every formula in the workbook directly for this specific literal shape, regardless of row context, and always assigns medium confidence, since a decimal in the rate-like range may occasionally be a legitimate coefficient rather than a business rate assumption.
-
R013 — IFERROR Masking
R013 (IFERROR Masking) flags any formula that wraps its calculation in IFERROR or IFNA. In a financial model, these functions silently substitute a fallback value — typically 0 or an empty string — whenever the wrapped formula would otherwise return an error, which can make a broken calculation look like a valid, ordinary result. Not every use is defective; medium confidence reflects that a defensive wrap is sometimes legitimate, but every instance is flagged for review to confirm the fallback value is correct in every scenario the formula could encounter.
-
R014 — Overly Complex Formula
R014 (Overly Complex Formula) flags a formula cell that has grown too long, or that calls too many distinct functions, to be reliably audited or understood at a glance. The two conditions — excessive character length and an excessive count of distinct function calls — are independent triggers, and both are reported together when a formula exceeds both thresholds at once.
-
R015 — Explicit Aggregation Review
R015 (Explicit Aggregation Review) flags a formula that adds many individual cell references together with bare plus operators, where the referenced rows form one unbroken, contiguous sequence. Non-contiguous addition chains are deliberately excluded, since skipping specific rows is a normal sign of intentional component selection rather than a structural risk. R015 carries the lowest weight of any FMAE rule and has a documented version history — it was substantially redesigned after empirical review found its original, more aggressive form generated a high rate of findings that were, on inspection, legitimate modelling practice rather than errors.
-
R016 — Missing Assumptions Tab
R016 (Missing Assumptions Tab) checks whether the workbook has an identifiable, dedicated input or assumptions layer at all. It uses three independent tiers of detection — sheet-name keywords, a structural signature of predominantly hardcoded content, and the worksheet classifier's own classification — so that a model using a non-standard tab name is not incorrectly flagged simply because its input sheet is not named "Assumptions." The check is suppressed entirely for very small workbooks, which are too small to warrant a dedicated tab.
-
R017 — External Link Count
R017 (External Link Count) flags a workbook whose formulas reference more than a threshold number of distinct external files. A single external link is a manageable, common dependency; as the count rises, the probability that at least one external file is absent or inaccessible when the model is handed to a new recipient rises with it, and any one missing file silently stales every cell that depends on it.
-
R018 — High Hardcode Density
R018 (High Hardcode Density) evaluates each worksheet's overall hardcode density — the share of its non-blank cells that are typed constants rather than formulas. A sheet at or above a density threshold is flagged, since a genuine model sheet should be predominantly formula-driven; a sheet dominated by hardcoded values is functioning as a static data table, whether or not that was the intention. Sheets with too few populated cells to be meaningfully assessed are excluded.
-
R019 — Repeated Hardcoded Literal
R019 (Repeated Hardcoded Literal) is the sole rule in the Assumptions Governance taxonomy category. It flags a numeric value that recurs as a hardcoded constant in three or more cells across the workbook, treating repetition itself as the signal — a value typed in the same way in multiple places suggests a single underlying assumption that should be centralized in one named input cell rather than scattered wherever it is used. Trivial values (0 and ±1) are excluded, since their repetition is structural, not a governance failure.
-
R020 — Anchor Drift
R020 (Reference Anchor Drift) checks, within a row of formulas that already share the same structural pattern, whether every reference to a given shared cell uses the same anchor class — relative, column-absolute, row-absolute, or fully absolute. When most of the row's formulas anchor a reference one way and a minority anchor the same logical reference a different way, the minority is flagged — the formula was very likely copy-pasted or edited incorrectly, a silent source of calculation error if the row is later extended or its cells copied further.