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 0292ac91eb5b62e869c79e72baebd567056c678e
Author: Pedro Giffuni <[email protected]>
AuthorDate: Wed Nov 11 16:35:53 2026 -0500

    docs/test: final Small Group inventory corrections (E.1.1)
    
    Reconcile grand total (144 applicable + 4 NOT_APPLICABLE allowances = 148 
inventory entries); COUNTBLANK empty-string retained as diagnostic with 
expected '-'; DATE FN-016 normative expected value set to '-' with calcval 
AOO-diagnostic distinction; add SYN-001-criteria calcval row; document macOS 
harness portability constraints. Test data/docs only; no production changes.
---
 openformula-small-group-audit.md                  | 18 +++++++++---------
 openformula-small-group-test-plan.md              | 11 +++++++++++
 test/odf-validate/calcval-cases14.tsv             |  3 ++-
 test/odf-validate/openformula-small-group-1.4.tsv |  4 ++--
 4 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/openformula-small-group-audit.md b/openformula-small-group-audit.md
index 80a6d08d32..275151825a 100644
--- a/openformula-small-group-audit.md
+++ b/openformula-small-group-audit.md
@@ -145,14 +145,14 @@ The Small Group requires 110 functions (§2.3.2.E). All 
110 have opcodes and imp
 
 | Category | Total | Status | Count |
 |----------|-------|--------|-------|
-| Basic Limits | 4 | UNVERIFIED runtime | 0 verified, 4 UNVERIFIED |
-| Syntax | 11 | UNVERIFIED runtime | 0 verified, 11 UNVERIFIED (SG-SYN-001 
criteria §4.11.11 now included in E.1 test inventory) |
+| Basic Limits | 4 | Awaiting runtime | 0 verified, 4 awaiting |
+| Syntax | 11 | Awaiting runtime | 0 verified, 11 awaiting (SG-SYN-001 
criteria §4.11.11 now included in E.1 test inventory) |
 | Conversions | 5 | IMPLEMENTED_UNVERIFIED | 0 verified, 5 UNVERIFIED |
 | Operators | 14 | IMPLEMENTED_UNVERIFIED | 0 verified, 14 UNVERIFIED |
 | Functions | 110 | IMPLEMENTED_UNVERIFIED | 0 verified, 110 UNVERIFIED |
-| Allowances | 4 | Documented | 4 documented |
+| Allowances | 4 | NOT_APPLICABLE | 4 documented (§2.3.2.F/G explicit 
permissions to omit) |
 
-**Grand total: 148 requirements (4 Basic Limits + 11 Syntax + 5 Conversions + 
14 Operators + 110 Functions + 4 Allowances), 0 runtime-verified, 148 
UNVERIFIED.**
+**Grand total: 148 inventory entries — 144 applicable requirements awaiting 
runtime verification (Basic Limits 4 + Syntax 11 + Conversions 5 + Operators 14 
+ Functions 110), 4 explicit allowances marked NOT_APPLICABLE (§2.3.2.F/G: 
inline arrays, complex numbers, multi-area references, reference union), 0 
runtime-verified.**
 
 ---
 
@@ -162,9 +162,9 @@ The Small Group requires 110 functions (§2.3.2.E). All 110 
have opcodes and imp
 
|---------------|---------|-------------|-------------------|----------|--------|
 | INDEX row-vector single-arg | 6.14.6 | Returns error (Milestone A fix: 
removed ODF 1.3 row-vector shortcut) | Error (ODF 1.4 removed rule) | Fixed in 
Milestone A; regression risk | interpr1.cxx; KNOWN-LIMITATIONS:71 |
 | CONVERT atm | 6.16.18 | 101325.1 Pa (Milestone C fix: corrected from 
101324.996583 Pa) | 101325.1 Pa | Fixed in Milestone C | interpr2.cxx; 
KNOWN-LIMITATIONS:72 |
-| DATE pre-1583 (FN-016-DATE-pre1583) | 6.10.2 | AOO observed #VALUE! for 
`DATE(1500;1;1)` (outside 1904 ≤ Year ≤ 9956) | §6.10.2 constrains 
Year/Month/Day; evaluators may evaluate out-of-constraint but `DATE(1500;1;1)` 
is implementation-defined/diagnostic, not a mandatory `#ERR` | 
Impl-defined/diagnostic (E.1 reclassified) | interpr2.cxx; 
IMPLEMENTATION-DEFINED:155 |
+| DATE pre-1583 (FN-016-DATE-pre1583) | 6.10.2 | AOO observed #VALUE! for 
`DATE(1500;1;1)` (outside 1904 ≤ Year ≤ 9956) | §6.10.2 constrains 
Year/Month/Day; evaluators may evaluate out-of-constraint but `DATE(1500;1;1)` 
is implementation-defined/diagnostic, not a mandatory `#ERR`. Normative 
expected value is `-` (not an ODF conformance error assertion); calcval 
`DATE.pre1583` retains `#ERR` only as explicitly identified AOO-specific 
diagnostic. | Impl-defined/diagnostic (E.1 reclassified [...]
 | COUNTA empty cells / empty string | 6.13.7 | ODF 1.3 semantics | ODF 1.4 
§6.13.7: counts non-blank cells; empty string `""` is not blank. E.1 adds 
fixtures for empty cells and `""` (where harness-expressible). | UNVERIFIED | 
interpr1.cxx:ScCount2 |
-| COUNTBLANK "" in cell | 6.13.8 | Unverified | §6.13.8: 
implementation-defined whether a cell returning `""` is blank. E.1 documents 
limitation: calcval harness cannot place `""` into a data cell (scratch 
AA1:AF12 cleared each case); range fixtures cover truly empty cells. | 
Impl-defined/UNVERIFIED | interpr1.cxx:ScCountEmptyCells |
+| COUNTBLANK "" in cell | 6.13.8 | Unverified | §6.13.8: 
implementation-defined whether a cell returning `""` is blank. 
`FN-014-COUNTBLANK-empty-cells` covers truly empty cells; 
`FN-014-COUNTBLANK-empty-string` retained as diagnostic only with expected `-` 
(NOT testing `""`-in-cell). `""`-in-cell blankness is impl-defined; calcval 
harness cannot place `""` into a data cell. | Impl-defined/UNVERIFIED | 
interpr1.cxx:ScCountEmptyCells |
 
 ---
 
@@ -176,9 +176,9 @@ The Small Group requires 110 functions (§2.3.2.E). All 110 
have opcodes and imp
 - **SG-BL-004**: corrected to 7 genuinely nested function levels 
(`IF(TRUE;IF(...IF(TRUE;1;2)...))`, 7 nested IF calls), balanced parens, 
deterministic result 1.
 - **SG-SYN-001**: added Criteria syntax §4.11.11 test `SYN-001-criteria` 
(`=DCOUNT(R1:T6;;V1:V2)`, expected 4) using existing calcval database/criteria 
fixtures.
 - **SG-SYN-009**: marked not directly executable in calcval harness (requires 
pre-defined named expression `MYNAME`); test remains UNVERIFIED with explicit 
note.
-- **SG-FN-013/COUNTA**: fixtures added for truly empty cells and empty string 
`""` per §6.13.7 (empty string non-blank). Harness-expressible via inline args; 
empty-cell cases use unset D6:D7.
-- **SG-FN-014/COUNTBLANK**: fixtures added for truly empty cells; 
`""`-in-range-cell case documented as implementation-defined per §6.13.8 and 
not directly reproducible because calcval clears scratch AA1:AF12 and does not 
pre-populate `""` cells.
-- **SG-FN-016/FN-016-DATE-pre1583**: reclassified as 
implementation-defined/diagnostic (out-of-constraint Year < 1904), not 
mandatory `#ERR`; AOO observed `#VALUE!`.
+- **SG-FN-013/COUNTA**: fixtures added for truly empty cells and empty string 
"" per §6.13.7 (empty string non-blank). Harness-expressible via inline args; 
empty-cell cases use unset D6:D7.
+- **SG-FN-014/COUNTBLANK**: FN-014-COUNTBLANK-empty-cells (=COUNTBLANK(D6:D7), 
expected 2) covers truly empty cells. FN-014-COUNTBLANK-empty-string is 
retained as diagnostic only with expected - — it uses =COUNTBLANK(D6:D7) 
(genuinely empty cells, not ""), clearly labeled as NOT testing a cell 
containing ""; the required ""-in-cell fixture cannot be established by calcval 
harness (scratch cleared each case; no pre-populated "" data cells). ""-in-cell 
blankness is impl-defined per §6.13.8.
+- **SG-FN-016/FN-016-DATE-pre1583**: reclassified as 
implementation-defined/diagnostic (out-of-constraint Year < 1904), not 
mandatory #ERR. Normative expected value is - (not an ODF conformance error 
assertion). The calcval DATE.pre1583 row retains #ERR only as an explicitly 
identified AOO-specific diagnostic assertion (AOO observed #VALUE!), clearly 
labeled as not an ODF conformance assertion.
 - **BITAND arity**: confirmed `BITAND.3params` (`=BITAND(6;3;1)` expected 
`#ERR`) remains valid per §6.6.2 (`BITAND(Integer X; Integer Y)`); no 
classification change.
 - **Runtime verification**: not performed (no AOO build tree; calcval harness 
macOS-only). Only static/syntax/fixture checks applied.
 
diff --git a/openformula-small-group-test-plan.md 
b/openformula-small-group-test-plan.md
index a6cb5cf26a..fb53b98130 100644
--- a/openformula-small-group-test-plan.md
+++ b/openformula-small-group-test-plan.md
@@ -72,6 +72,17 @@ The following cannot be verified until a configured AOO 
build tree exists:
 | ODF save/reload round-trip | No built office available |
 | Excel import/export | No built office available |
 
+## Calcval Harness Portability Constraints
+
+The `test/odf-validate/` calcval launcher is macOS-only and is NOT directly 
Linux-compatible. It is not ported in this milestone.
+
+- **zsh shebangs and `${0:A:h}` path expansion**: `start.sh`, `runpy.sh`, and 
`env.sh` use `#!/bin/zsh` and `${0:A:h}` (zsh-specific path resolution) at 
`test/odf-validate/start.sh:1,23`, `test/odf-validate/runpy.sh:1,23`, 
`test/odf-validate/env.sh:23`.
+- **macOS application bundle path**: `env.sh` sets 
`APP=${ODFV_APP:-$D/app/OpenOffice.app}/Contents`, and `start.sh:25` launches 
`$APP/MacOS/soffice` (an `.app` bundle structure, macOS-only).
+- **Apple Python Framework default**: `env.sh:28` defaults 
`PY=/usr/local/Library/Frameworks/Python.framework/Versions/3.14/bin/python3.14`
 (macOS Python Framework path).
+- **`lsof` startup check**: `start.sh:28` polls with `lsof -nP -iTCP:$2 
-sTCP:LISTEN` to wait for the office socket — macOS/BSD-specific `lsof` 
invocation.
+
+No production source or runtime behavior changed. All corrections are test 
data/docs only.
+
 ## Relationship to Milestones
 
 - **Milestone D**: Established the 110-function Small Group inventory
diff --git a/test/odf-validate/calcval-cases14.tsv 
b/test/odf-validate/calcval-cases14.tsv
index 41c2a8bb9f..da4e7cb0b5 100644
--- a/test/odf-validate/calcval-cases14.tsv
+++ b/test/odf-validate/calcval-cases14.tsv
@@ -147,7 +147,8 @@ COUNTA.empty        =COUNTA(D6:D7)  cell    0       6.13.7 
COUNTA: truly empty cells are not coun
 COUNTA.emptystr        =COUNTA(1;"";"x")       cell    3       6.13.7 COUNTA: 
empty string "" is non-blank and counted
 COUNTBLANK.range       =COUNTBLANK(D1:D3)      cell    0       6.13.8 
COUNTBLANK over range with no empty cells
 COUNTBLANK.empty       =COUNTBLANK(D6:D7)      cell    2       6.13.8 
COUNTBLANK: truly empty cells are counted (D6:D7 unset)
-DATE.pre1583   =DATE(1500;1;1) cell    #ERR    6.10.2 DATE(1500;1;1) outside 
constraints (Year>=1904); impl-defined/diagnostic, not mandatory #ERR (AOO 
observed #VALUE!)
+DATE.pre1583   =DATE(1500;1;1) cell    #ERR    6.10.2 DATE(1500;1;1) outside 
constraints (Year>=1904); impl-defined/diagnostic per ODF 1.4 — NOT mandatory 
#ERR. THIS CALCVAL ASSERTION IS AOO-SPECIFIC DIAGNOSTIC ONLY (observed 
#VALUE!), not an ODF conformance assertion.
+SYN-001-criteria       =DCOUNT(R1:T6;;V1:V2)   cell    4       6.x Criteria 
syntax §4.11.11 via DCOUNT against existing R1:T6 database and V1:V2 criteria 
fixtures (Age>=30 → B,C,D,E)
 INDEX.rowvec.single    =INDEX(H1:L1;3) cell    #ERR    6.14.6 INDEX row vector 
single arg: ODF 1.4 error (Milestone A fix)
 INDEX.rowvec.colarg    =INDEX(H1:L1;;3)        cell    30      6.14.6 INDEX 
row vector with column arg only (col 3 of H1:L1=10,20,30,40,50)
 INDEX.row.outrange     =INDEX(D1:D5;6) cell    #ERR    6.14.6 INDEX row out of 
range
diff --git a/test/odf-validate/openformula-small-group-1.4.tsv 
b/test/odf-validate/openformula-small-group-1.4.tsv
index f0cd7ed5cf..2cdaae78de 100644
--- a/test/odf-validate/openformula-small-group-1.4.tsv
+++ b/test/odf-validate/openformula-small-group-1.4.tsv
@@ -67,10 +67,10 @@ SG-FN-013   6.13.7  FN-013-COUNTA-empty-cells       
=COUNTA(D6:D7)  0       -       UNVERIFIED      COUNTA
 SG-FN-013      6.13.7  FN-013-COUNTA-empty-string      =COUNTA(1;"";"x")       
3       -       UNVERIFIED      COUNTA counts empty string "" as non-blank per 
§6.13.7
 SG-FN-014      6.13.8  FN-014-COUNTBLANK-nonempty      =COUNTBLANK(D1:D3)      
0       -       UNVERIFIED      COUNTBLANK over range with no empty cells
 SG-FN-014      6.13.8  FN-014-COUNTBLANK-empty-cells   =COUNTBLANK(D6:D7)      
2       -       UNVERIFIED      COUNTBLANK over truly empty cells (D6:D7 unset)
-SG-FN-014      6.13.8  FN-014-COUNTBLANK-empty-string  =COUNTBLANK(D6:D7)      
2       -       UNVERIFIED      COUNTBLANK does not count "" text values as 
blank in ranges; harness cannot place "" in data cells (scratch cleared), so 
this verifies only empty-cell counting; ""-in-cell case impl-defined per §6.13.8
+SG-FN-014      6.13.8  FN-014-COUNTBLANK-empty-string  =COUNTBLANK(D6:D7)      
-       -       UNVERIFIED      DIAGNOSTIC: does NOT test cell containing "" — 
D6:D7 are genuinely empty cells, already covered by 
FN-014-COUNTBLANK-empty-cells. Required ""-in-cell fixture cannot be 
established by calcval harness (scratch AA1:AF12 cleared each case; no 
pre-populated "" data cells). ""-in-cell blankness is impl-defined per §6.13.8.
 
 # ===== Functions (§6.x) — Priority 2: DATE pre-1583 =====
-SG-FN-016      6.10.2  FN-016-DATE-pre1583     =DATE(1500;1;1) #ERR    -       
UNVERIFIED      DATE(1500;1;1) outside §6.10.2 constraints (Year>=1904); 
impl-defined/evaluator-diagnostic, not mandatory #ERR (AOO observed #VALUE!)
+SG-FN-016      6.10.2  FN-016-DATE-pre1583     =DATE(1500;1;1) -       -       
UNVERIFIED      DATE(1500;1;1) outside §6.10.2 constraints (Year>=1904); result 
impl-defined/diagnostic, NOT a mandatory ODF error. AOO observed #VALUE! as a 
diagnostic only — not a conformance assertion.
 SG-FN-067      6.13.27 FN-067-NA       =NA()   #N/A    -       UNVERIFIED      
NA function returns #N/A error
 
 # ===== Functions (§6.x) — Priority 3: INDEX =====

Reply via email to