Skip to content

ARRAYFORMULA parity: broadcast-allowlist expansion + control-flow broadening (implicit intersection gated separately) #551

Description

@hhimanshu

Scope amended 2026-07-25

Original scope ("ARRAYFORMULA parity beyond basic spill, incl. implicit intersection") was post-v1/tracking-only per 2026-06-07-workbook-v1-scope.md Decision 2. That row is now superseded by 2026-07-25-amend-workbook-v1-scope-arrayformula-format.md (Decision 1), owner-approved via truecalc/distributions#64.

Approved, in scope now:

  • Expand the per-cell scalar broadcast allowlist in arrayformula_lazy_fn (crates/core/src/eval/functions/array/mod.rs:1470) beyond LEN/UPPER to the full set of Sheets per-cell scalar functions (fixture-confirmed, not assumed).
  • Broaden broadcast beyond IF to other control-flow-shaped functions (IFS, SWITCH), contingent on Sheets confirming per-cell behavior for each.

Listed but NOT yet cleared — requires its own explicit sign-off before implementation:

  • General implicit intersection for unmarked range references in ordinary (non-ARRAYFORMULA) formulas (e.g. =A1:A10+1). This changes scalar-context evaluation semantics workbook-wide, not just inside ARRAYFORMULA — a materially bigger blast radius than the two approved bullets above. Do not start this without a separate go-ahead.

Still explicitly out of scope, unchanged:

  • Structural-edit reference rewriting (insert/delete row/col) — remains a separate v1.1+ tracking issue (post-v1). Nothing in this issue implies or requires it.

Blocked on fixtures. Existing ARRAYFORMULA fixture coverage is thin and doesn't cover the broadened allowlist. New fixture rows (per newly-broadcast function) are needed via the truecalc/fixtures GAS pipeline before implementation lands — values are never self-confirmed. This is being sequenced together with other fixtures-needing issues; do not start core work ahead of that landing.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions