diff --git a/docs/language_status/c.md b/docs/language_status/c.md index a873fe9a0..265f3cffe 100644 --- a/docs/language_status/c.md +++ b/docs/language_status/c.md @@ -281,6 +281,15 @@ scope caveat near the end of this section — a handful of real, independently-f args-counting bugs exist and predate this sweep; this methodology can only catch what the three tools disagree about, not a shared blind spot). Every disagreement that DID surface either resolved in GitGalaxy's favor, or turned out to be a bug in this repo's own comparison tooling + +**Recall audit (2026-08-29, skill step 2.6).** Every function tree-sitter reports that GitGalaxy +does not (6 occurrences) was individually read. **All 6 are inside `#if 0` dead blocks** — +`_PyObject_ManagedDictValidityCheck` (`cpython/dictobject.c:7396`), `print_stack` / +`print_stacks` / `tos_char` (`cpython/frameobject.c:1264`), and `PlinkPrint` / `SetPrint` +(`sqlite/lemon.c:3443`, K&R-style *and* dead). tree-sitter-c has no preprocessor model and +parses the dead branch; GitGalaxy correctly skips it (Claim 8). The accuracy audit was corrected +to drop `#if 0` / `#if false` function definitions from ground truth — **C func recall 99.7% → +100.0%**, zero real recall gaps. (found and fixed as part of the same pass) or a known tree-sitter-c/ctags limitation — never GitGalaxy's regex engine itself. Current measured numbers (`tests/tools/tri_comparison_chart.py --languages c`, `language-crucible/data/c/` — diff --git a/docs/language_status/cpp.md b/docs/language_status/cpp.md index 353cfe79d..d4b954e39 100644 --- a/docs/language_status/cpp.md +++ b/docs/language_status/cpp.md @@ -293,6 +293,27 @@ built entirely from that investigation's evidence trail, not from memory of it. |---|---|---|---|---| | cpp | ~780 (raw ledger counts, updated after the macro-shield fix) | 6 (4 filed and open, 2 filed and fixed) | 4 (fixed across two follow-up rounds) | 3 (documented, not fixable here) | +### Recall audit (2026-08-29, skill step 2.6) + +Every function tree-sitter reports that GitGalaxy does not — **164 occurrences** — was +individually read. **Cpp func recall 87.0% → 99.9%** (100% precision throughout). Bucket +breakdown: + +- **~96** — `OPCODE(m_op) { ... }` case-label bodies in `godot/gdscript_vm.cpp`'s computed-goto + bytecode table. Function-like macro invocation; tree-sitter's alone. Now in + `_CPP_KNOWN_MACRO_HALLUCINATIONS`. +- **~50** — `_FORCE_INLINE_`-macro-mangled member parses in `godot/object.h` / `variant.h`: + tree-sitter drops the `operator` keyword or `~` into an ERROR node and names the member by a + bare type (`for`, `bool`, `void`, `_value`). #2455's #1849-Phase-2 promotion + a symmetric + "don't trust tree-sitter's names inside a cpp ERROR span" drop. +- **~12** — `= default` / `= delete` special members (`mlir/flatbuffer_export.cc`, + `object.h`) — not body-bearing, GitGalaxy correctly skips. +- **~4** — `_PyObject_ManagedDictValidityCheck` etc. inside `#if 0` (also counts for `c`) — + tree-sitter has no preprocessor model (Claim 8). +- **1 real GitGalaxy recall gap** — `__control_entrypoint(DllExport) STDAPI DllCanUnloadNow()` + in `powertoys/ImageResizerExt.cpp`: a macro-supplied return type `func_start` doesn't admit. + → [#2460](https://github.com/squid-protocol/gitgalaxy/issues/2460). + Six real GitGalaxy engine defects were confirmed and filed in this sweep — more than any other language this sweep methodology has been run against so far, though that reflects C++'s syntactic complexity (templates, operator overloading, out-of-class definitions, GNU extensions in real diff --git a/docs/language_status/fortran.md b/docs/language_status/fortran.md index 682c333ce..122539393 100644 --- a/docs/language_status/fortran.md +++ b/docs/language_status/fortran.md @@ -309,6 +309,16 @@ traced to their own confirmed limitations); two were confirmed real bugs in this | Class recall/precision | **100%** (11/11) | 100% (11/11) | 100% (11/11) | fully reconciled after this pass's ctags_reader.py fix — see below | | Args found (of 123 total claimed by any tool) | **123** | 123 | 95 | tied for best; a separate, narrower per-function args-*count* defect exists independent of this existence panel — see below | +**Recall audit (2026-08-29, skill step 2.6).** Every function tree-sitter reports that GitGalaxy +does not (2 occurrences — `compute_eta`, `wrf_error_fatal`) was individually read. Both are +**phantoms tree-sitter parses from inside the `#ifdef VERT_UNIT` unit-test driver** — the +top-level `program vint` / `program foo` blocks (`module_initialize_real.F:5375` / `:7519`) that +are alternative compilation roots, dead when the file is built as a module. tree-sitter has no +preprocessor model; GitGalaxy finds both real `SUBROUTINE` definitions (lines 5471 / 7567) and +correctly ignores the driver blocks. The accuracy audit was corrected to mark a module file's +`program`…`end program` spans as blind spots — **Fortran func recall 98.6% → 100.0%**, zero real +recall gaps. + Before this pass: Functions Found showed 137*/123*/137* (all three asterisked — unvalidated), Func Precision 135/137*/123/123*/137/137*, Classes Found 11*/11*/3* (ctags badly undercounting), Args Found 121*/121*/95*. Every asterisk here is now cleared and GitGalaxy holds an outright diff --git a/docs/language_status/lua.md b/docs/language_status/lua.md index 33221980f..16a470523 100644 --- a/docs/language_status/lua.md +++ b/docs/language_status/lua.md @@ -60,12 +60,15 @@ tradeoff. ## 5. Known limitations (accepted / tracked) -- **Two low-value recall misses** (shape `agree[ctags,tree_sitter]_vs[gitgalaxy]`, 2 - occurrences). `constructs.lua:f` is an occurrence-alignment fuzz on a name defined 4× — ctags' - own false-positive `f` (from a `local f = load(...)` assignment) and a tree-sitter `f` pair to - different lines than GitGalaxy's four real ones. `literals.lua:lexerror` is a genuine single - miss inside `test/literals.lua`, the Lua suite's lexer-torture fixture (adversarial nested - `[[` / `]=]` / `\z` string data by design). Neither is worth chasing. +- **Two recall misses** (skill step 2.6 recall audit, 2026-08-29 — func recall 99.7%), both + filed as [#2461](https://github.com/squid-protocol/gitgalaxy/issues/2461): + - `constructs.lua:105` — `local a; local function f(x) ... end`. `func_start` is + start-of-line anchored, so a `local function` that is not the first statement on its line is + missed. GitGalaxy finds the other 4 `function f` in the file; this is a real, narrow gap. + - `literals.lua:80` — `local function lexerror (s, err)`, inside `test/literals.lua` (the Lua + suite's *lexer-torture fixture*, adversarial nested `[==[[===[[=[…]]=][====[…]` long + brackets that defeat `_LUA_LONG_BRACKET_RE`'s single-backref shielding). Only ever exercised + by this one fixture. - **`class_start` keeps one borderline hit** (`tracegc.lua:M` — `local M = {}` with `function M.start` / `function M.stop` / `return M`, a real module table). #2439's proto-table "tell" gate dropped the other 13 ALL_CAPS-data-table false positives; `M` is legitimately @@ -264,8 +267,9 @@ shared reason." This is the common case per the skill's step 4 guidance. heuristic matched ALL_CAPS data tables. - [#2440](https://github.com/squid-protocol/gitgalaxy/issues/2440) — **fixed**: polyglot segmentation split a function at `