This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch openformula
in repository https://gitbox.apache.org/repos/asf/openoffice.git

commit 8cedcc34dda626bc10b76806cee9e588003b09e3
Author: Pedro Giffuni <[email protected]>
AuthorDate: Wed Nov 11 17:32:01 2026 -0500

    docs: Milestone G sequence status — G.1 complete, G.2 investigated
    
    Updated openformula-milestone-g-sequence.md: G.1 marked complete 
(STRING_MAXLEN documented, ScDBCount TODO investigated); G.2 fix approach 
documented with row-by-row iteration using IsQueryValid; status table added; 
dependency summary updated; G.2 blocked on build/test environment. No 
production source modified.
---
 openformula-milestone-g-sequence.md | 76 +++++++++++++++++++++++--------------
 1 file changed, 48 insertions(+), 28 deletions(-)

diff --git a/openformula-milestone-g-sequence.md 
b/openformula-milestone-g-sequence.md
index f8797f675d..e792c00458 100644
--- a/openformula-milestone-g-sequence.md
+++ b/openformula-milestone-g-sequence.md
@@ -5,6 +5,20 @@
 **Source:** `openformula-small-group-semantic-audit.md`, 
`openformula-small-group-semantic-gaps.tsv`  
 **Scope:** Implementation planning only. No code changes in this document.
 
+## Current Status
+
+| Phase | Status | Commit | Notes |
+|---|---|---|---|
+| G.1 | Complete | `41da3628f9` | STRING_MAXLEN documented; ScDBCount 
empty-cell TODO investigated |
+| G.2 | Investigated (not implemented) | — | Fix approach documented; requires 
AOO build/test environment |
+| G.3 | Pending | — | Decision record needed before any code change |
+| G.4 | Pending | — | Corpus regression analysis needed |
+| G.5 | Pending | — | Runtime verification only; no build available |
+| G.6 | Pending | — | Runtime verification only; no build available |
+
+**Blocker:** No configured AOO build tree; `sc`/`scaddins` not built; calcval 
harness macOS-only. Runtime verification deferred to consolidated Calc testing 
phase.
+
+
 ## Principles
 
 1. **Audit-first:** Implementation follows the F-audit findings; no 
speculative fixes.
@@ -15,24 +29,30 @@
 
 ## Phase G.1 — Zero-Risk Documentation & Test Harness (No Code Changes)
 
+**STATUS: COMPLETE** (committed at `41da3628f9`)
+
 These items require no production source modification and can be completed 
immediately.
 
-| Order | Gap ID | Area | Action | Rationale |
-|---|---|---|---|---|
-| G.1.1 | F-GAP-008 | Basic Limits — strings | Locate `STRING_MAXLEN` 
definition; confirm value >= 32767 or document actual limit | Static lookup; no 
code change |
-| G.1.2 | F-GAP-012 | Syntax — named expressions | Document named expression 
test requirement (pre-defined `MYNAME` not available in calcval harness) | Test 
infrastructure note |
-| G.1.3 | F-GAP-015 | COUNTA/COUNTBLANK | Document scalar `""` vs formula-cell 
`""` distinction as implementation-defined | Audit documentation |
+| Order | Gap ID | Area | Action | Rationale | Status |
+|---|---|---|---|---|---|
+| G.1.1 | F-GAP-008 | Basic Limits — strings | Locate `STRING_MAXLEN` 
definition; confirm value >= 32767 or document actual limit | Static lookup; no 
code change | Complete — `main/tools/inc/tools/string.hxx:110-120`; default 
`STRING_MAXLEN = 65,535` (0xFFFF without STRING32), exceeds ODF 1.4 32,767 
minimum |
+| G.1.2 | F-GAP-012 | Syntax — named expressions | Document named expression 
test requirement (pre-defined `MYNAME` not available in calcval harness) | Test 
infrastructure note | Complete — documented in F-GAP-012; SYN-009-named marked 
not directly executable |
+| G.1.3 | F-GAP-015 | COUNTA/COUNTBLANK | Document scalar `""` vs formula-cell 
`""` distinction as implementation-defined | Audit documentation | Complete — 
documented in F-GAP-001, F-GAP-002, F-GAP-015 |
 
-## Phase G.2 — Low-Risk: Criteria Syntax Empty-Cell Fix (ScDBCount)
+## Phase G.2 — Investigation Complete: Criteria Syntax Empty-Cell Fix 
(ScDBCount)
 
-This is a targeted fix with a clear TODO in source and contained blast radius.
+**STATUS: INVESTIGATED — implementation requires build/test environment**
 
-| Order | Gap ID | Area | File | Change | Risk |
-|---|---|---|---|---|---|
-| G.2.1 | F-GAP-004 / F-GAP-005 | Criteria — DCOUNT empty-cell matching | 
`main/sc/source/core/tool/interpr1.cxx:6838-6845` | Address ScDBCount TODO: 
ensure empty cells matched by query are counted when field is missing; adapt 
ScQueryCellIterator callers as noted | Low — isolated to DCOUNT without field; 
documented TODO already exists |
+This is a targeted fix with a clear TODO in source and contained blast radius. 
The root cause is confirmed: `ScQueryCellIterator` ("run through all not empty 
cells") skips empty cells, and `ScDBQueryDataIterator` skips `CELLTYPE_NONE` 
via `default` case at `dociter.cxx:655-657`. Per ODF 1.4 §6.9.3, DCOUNT without 
a field should count ALL matching rows including those with empty result cells.
+
+| Order | Gap ID | Area | File | Finding | Fix Approach | Risk |
+|---|---|---|---|---|---|---|
+| G.2.1 | F-GAP-004 | Criteria — DCOUNT empty-cell matching | 
`main/sc/source/core/tool/interpr1.cxx:6838-6845` | ScDBCount missing-field 
path uses `ScQueryCellIterator` which skips empty cells; DCOUNT undercounts 
when matching rows have empty result cells | Replace `ScQueryCellIterator` 
iteration with row-by-row iteration using 
`ScDBQueryDataIterator::IsQueryValid()` per row, counting all matching rows 
regardless of cell emptiness; keep fix isolated to ScDBCount missing-field path 
| Low [...]
+
+**Implementation detail:** The fix would iterate `nRow` from `nRow1` to 
`nRow2`, calling `IsQueryValid(*pDok, *pQueryParam, nTab, nRow, pCell)` for 
each row (with `pCell` possibly NULL for empty cells), and incrementing 
`nCount` for each valid match. This differs from current `ScQueryCellIterator` 
approach which only visits rows with non-empty cells.
 
 **Dependencies:** None.  
-**Runtime validation needed:** Yes — DCOUNT with empty result cells.
+**Runtime validation needed:** Yes — DCOUNT with empty result cells. 
**Blocked:** No AOO build tree available; cannot build/test.
 
 ## Phase G.3 — Medium-Risk: COUNTA/COUNTBLANK Behavior Review
 
@@ -86,30 +106,30 @@ No code changes expected (no hard limits found). 
Verification only.
 ## Dependency Summary
 
 ```
-G.1 (docs/tests, no code) ──┐
-                            ├── G.2 (ScDBCount empty-cell) ──┐
-G.5 (limits verification) ──┤                                ├── G.3 
(COUNTBLANK decision)
-G.6 (syntax verification) ──┤                                │
-G.4 (INDEX compatibility) ──┘                                └── 
(runtime-validated)
+G.1 (docs, COMPLETE) ──┐
+                       ├── G.2 (ScDBCount empty-cell, INVESTIGATED) ──┐
+G.5 (limits verification) ──┤                                        ├── G.3 
(COUNTBLANK decision)
+G.6 (syntax verification) ──┤                                        │
+G.4 (INDEX compatibility) ──┘                                        └── 
(runtime-validated)
 ```
 
 ## Estimated Implementation Complexity
 
-| Phase | Complexity | Rationale |
-|---|---|---|
-| G.1 (docs) | Trivial | No code changes |
-| G.2 (ScDBCount) | Low | Isolated TODO; contained scope |
-| G.3 (COUNTBLANK) | Medium | Behavior decision; may need compatibility option 
|
-| G.4 (INDEX compat) | Medium | Corpus regression analysis needed |
-| G.5/G.6 (verification) | Low | Test execution only; no code changes |
+| Phase | Complexity | Rationale | Status |
+|---|---|---|---|
+| G.1 (docs) | Trivial | No code changes | Complete |
+| G.2 (ScDBCount) | Low | Isolated TODO; contained scope | Investigated — 
blocked on build |
+| G.3 (COUNTBLANK) | Medium | Behavior decision; may need compatibility option 
| Pending decision record |
+| G.4 (INDEX compat) | Medium | Corpus regression analysis needed | Pending |
+| G.5/G.6 (verification) | Low | Test execution only; no code changes | 
Pending build |
 
 ## Definition of Done for Milestone G
 
-- All G.1 documentation items complete
-- G.2 ScDBCount empty-cell fix implemented (if corpus testing confirms need)
-- G.3 COUNTBLANK behavior documented (change or no-change decision recorded)
-- G.4 INDEX compatibility impact assessed
-- G.5/G.6 all runtime tests executed against built AOO
+- All G.1 documentation items complete (committed at `41da3628f9`)
+- G.2 ScDBCount empty-cell fix approach documented (blocked: no build/test 
environment)
+- G.3 COUNTBLANK behavior: decision record required before any code change
+- G.4 INDEX compatibility: corpus regression analysis required before 
compatibility option
+- G.5/G.6 all runtime tests: prepared, awaiting build environment
 - No production changes without corresponding calcval test coverage
 - All changes verified against ODF 1.4 normative expected results
 

Reply via email to