From 92e1e969979ee9a7c51c2dee1c48d85ef579d190 Mon Sep 17 00:00:00 2001 From: Hamza Date: Sat, 17 Oct 2026 14:11:29 +0500 Subject: [PATCH] =?UTF-8?q?Docs:=20=C2=A76's=20calculation=20bugs=20have?= =?UTF-8?q?=20all=20landed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gaps.md §6 still listed four things as missing and function-parity.md still marked 15-significant-digit comparison as missing, citing #57 — all five reports are closed and their PRs merged. The work list reads as the place to pick work from, so a closed entry sends someone after work that is done. Checked by behaviour, not by issue state, where that was possible: =0.1+0.2=0.3 -> TRUE =(0.1+0.2)-0.3 -> 5.55E-17 (full precision kept, as in Excel: the 15-digit rule is for comparison) =MATCH(0.3,{0.30000000000000004},0) -> 1 =COUNTIF({0.30000000000000004},0.3) -> 1 a spill blocked and then unblocked -> #SPILL! then the spill again, with its dependent back to 6 and by their regression tests for the other two: `deleting_a_3d_span_end_sheet_keeps_the_rest` (#140) and `sheet_operations_keep_names_on_their_sheets` (#134). §6 is left open rather than deleted: it says wrong numbers are the worst kind of bug, and five closed reports are not the same as the category being clear — that needs §15's oracle suite. The function counts are untouched; this is formula-language semantics, not the inventory. --- docs/function-parity.md | 11 ++++++----- docs/gaps.md | 17 ++++++++++------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/docs/function-parity.md b/docs/function-parity.md index 2343e0de9..8ac2b197b 100644 --- a/docs/function-parity.md +++ b/docs/function-parity.md @@ -1,6 +1,6 @@ # Function parity: worksheet functions and formulas -> **Last reviewed:** 2026-10-15 · **Last updated:** 2026-10-15 · **Change:** minor (MEDIAN and AGGREGATE median avoid intermediate overflow) · **Target:** Microsoft Excel (Microsoft 365), Excel for Mac 16.113.4 +> **Last reviewed:** 2026-10-15 · **Last updated:** 2026-10-17 · **Change:** minor (15-significant-digit comparison done; three resolved caveats cleared) · **Target:** Microsoft Excel (Microsoft 365), Excel for Mac 16.113.4 Excel's worksheet functions, category by category, against GridCraft's function library. Part of [target-app-parity.md](target-app-parity.md); gaps feed [gaps.md](gaps.md). @@ -72,16 +72,16 @@ PIVOTBY, REGEXTEST…) are all present. | Feature | Status | |---|---| | A1 and R1C1 references, absolute/relative/mixed, F4 cycling | done | -| 3-D references (`Sheet1:Sheet3!A1`) | done; endpoint-deletion bug (#140) | +| 3-D references (`Sheet1:Sheet3!A1`) | done; deleting a span's end sheet keeps the rest (#140) | | Structured references (`Table1[Col]`, `[#Totals]`, `@`; the unbracketed `[[#This Row],Col]` some writers emit) | done | | Defined names (workbook and sheet scope), Create from Selection | done | -| Dynamic arrays, spill, `#SPILL!`, spill operator `A1#` | done; stale-spill bugs (#133, #139; PRs #148, #157) | +| Dynamic arrays, spill, `#SPILL!`, spill operator `A1#` | done; stale spills after a structural edit or a cleared blocker fixed (#133, #139; PRs #148, #157) | | Recalculation after clearing large sparse ranges | every stored cell changed by Clear is reported to recalculation, without a million-coordinate cutoff; removed formula spills are cleared, and removing empty merges still unblocks spills (#1032) | -| Implicit intersection `@`, legacy CSE array formulas | done; legacy array range fill (PR #156) | +| Implicit intersection `@`, legacy CSE array formulas | done, the entered range filled (PR #156) | | Trim references `A1:.E10` (trailing), `A1.:E10` (leading), `A1.:.E10` (both), also on whole rows/columns (`A:.A`) | done; evaluated as `TRIMRANGE(range, code, code)`, adjusted on insert/delete; files store `_xlfn.TRIMRANGE(range,code,code)` (Excel's own file spelling unconfirmed in public docs), `_xlfn._TRO_ALL/_TRO_LEADING/_TRO_TRAILING(...)` read too | | LET, LAMBDA, named LAMBDAs, ISOMITTED, MAP/REDUCE/SCAN/BYROW/BYCOL/MAKEARRAY | done | | Iterative calculation for circular references | done: with Enable Iterative Calculation on (`formulas.calculationOptions` `{iterative, maxIterations, maxChange}`, saved as ``), loops are evaluated again from their previous values (blank = 0) until no cell on a loop changes by Maximum Change or Maximum Iterations is reached; off, cycles give `#CIRC!`. Differences: no Options dialog yet (command only); GridCraft recalculates on open, so a loop that never settles (`=A1+1`) advances again each time the file is opened | -| 15-significant-digit comparison semantics | **missing** (#57: `=0.1+0.2=0.3` is FALSE) | +| 15-significant-digit comparison semantics | done (#57): `=0.1+0.2=0.3` is TRUE, and MATCH and COUNTIF compare the same way. Arithmetic keeps full precision, as Excel does — `=(0.1+0.2)-0.3` is 5.55E-17 | | External workbook references (`[Book.xlsx]Sheet1!A1`) | parsed; links dropped on open, no update | | Localized function names and `;` separators | **missing** (#45); en-US only | | Error values | the seven classic errors plus `#SPILL!`, `#CALC!`, `#GETTING_DATA` done; `#FIELD!`, `#BLOCKED!`, `#CONNECT!`, `#BUSY!`, `#UNKNOWN!`, `#PYTHON!` missing (minor: they come from data types, cloud and Python features) | @@ -114,6 +114,7 @@ workbooks; results checked in as data, not Excel files) and fixing what it finds | Date | Change | Summary | |---|---|---| +| 2026-10-17 | minor | 15-significant-digit comparison moved from missing to done (#57), and the resolved caveats on the 3-D reference, dynamic-array and legacy-array rows cleared (#140, #133, #139, #156) | | 2026-10-15 | minor | MEDIAN and AGGREGATE median use an overflow-safe midpoint (#1579); regressions cover finite extremes, tiny values and dependent recalculation | | 2026-10-13 | minor | Clear reports changed stored cells sparsely, including those beyond the first million coordinates; dependent formulas and removed spills update, while clearing empty merges still unblocks spills (#1032) | | 2026-10-12 | minor | USDOLLAR added as a Compatibility function (not on Microsoft's list, so the counts don't change); MIRR with no positive flow is -1, COUNTIF's bare `"<="` / `">="` skip empty strings, INDIRECT with `a1` = FALSE gives `#REF!` for A1-style text (#738) | diff --git a/docs/gaps.md b/docs/gaps.md index 03e8672c5..8ad64058e 100644 --- a/docs/gaps.md +++ b/docs/gaps.md @@ -1,6 +1,6 @@ # Gaps -> **Last reviewed:** 2026-10-11 · **Last updated:** 2026-10-12 · **Change:** minor (rows auto-fit oversized fonts on open and whole-row/column formatting) · **Target:** Microsoft Excel (Microsoft 365) +> **Last reviewed:** 2026-10-11 · **Last updated:** 2026-10-17 · **Change:** minor (§6's five reports have all landed) · **Target:** Microsoft Excel (Microsoft 365) Every known shortfall against Excel, one entry each, ranked by user impact (what blocks someone using GridCraft for real work first). This is the work list: pick from the top, check the open @@ -59,12 +59,14 @@ No alpha blockers: every core workflow passes the [alpha gate](roadmap.md#alpha- - **Estimate:** 12–20 h. [localization-parity.md](localization-parity.md) ### 6. Calculation correctness bugs (F) -- **Missing:** 15-significant-digit equality; spill updates after structural edits and cleared - blockers; 3-D span deletion; qualified names after sheet rename. -- **Evidence:** #57, #133, #139, #140, #134; PRs #148, #155, #156, #157. Iterative calculation - for circular references landed (no Options dialog yet). -- **Impact:** wrong numbers are worse than missing features. -- **Estimate:** 10–15 h. [function-parity.md](function-parity.md#formula-language) +- **Missing:** nothing known. The four this entry tracked have landed: 15-significant-digit + equality (#57, so `=0.1+0.2=0.3` is TRUE and MATCH and COUNTIF agree), spill updates after + structural edits and cleared blockers (#133, #139; PRs #148, #157), 3-D span deletion (#140), + and qualified names after a sheet rename (#134). Iterative calculation for circular references + landed too (no Options dialog yet, which is §13's). +- **Impact:** wrong numbers are worse than missing features, so this entry is kept until the + oracle suite of §15 can say the category is clear rather than only these five reports being so. +- **Estimate:** — [function-parity.md](function-parity.md#formula-language) ### 7. Legacy `.xls` only partly read; encrypted workbooks can't be saved with a password (FF) - **Evidence:** #121: Excel 97-2003 (BIFF8) `.xls` files now open (values, formulas, number @@ -168,6 +170,7 @@ No alpha blockers: every core workflow passes the [alpha gate](roadmap.md#alpha- | Date | Change | Summary | |---|---|---| +| 2026-10-17 | minor | §6: the five reports it tracked are closed and their PRs merged (#57, #133, #139, #140, #134; PRs #148, #155, #156, #157); the entry stays open for §15's oracle suite | | 2026-10-12 | minor | rows auto-fit oversized fonts on open and whole-row/column formatting (#833) | | 2026-10-12 | minor | Page Layout view: dragging margins on the rulers (#792) removed from the §14 remainder | | 2026-10-12 | minor | §13: Forecast Sheet Forecast Start (hindcast) landed (#785) |