There are three on-disk formula states, not two, and the extent means a different thing in each:
dynamic - the extent is derived from the result. It spills, and it resizes when the
result shape changes.error - a dynamic formula whose spill is currently blocked (#SPILL!). The recorded
extent collapses to the anchor cell.fixed - array-entered (Ctrl+Shift+Enter). The extent is authoritative and the result is
fitted to it (a dimension of 1 broadcasts, a longer one is clipped, a shorter one is padded
with #N/A); it never spills and never resizes. Written through
ICellRange.SetValuesOptions.arrayFixed.fixed + error is not a state: a fixed block owns its cells, so a write into part of it is
refused at the write site rather than detected at calc. That is what lets these three be one
enum rather than two booleans.
How a formula's array extent is to be interpreted.