Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions docs/language_status/c.md
Original file line number Diff line number Diff line change
Expand Up @@ -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/` —
Expand Down
21 changes: 21 additions & 0 deletions docs/language_status/cpp.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 10 additions & 0 deletions docs/language_status/fortran.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
20 changes: 12 additions & 8 deletions docs/language_status/lua.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 `<style>` / `<script>` inside a `[[ ]]` string.
- Two low-value recall misses remain (`constructs.lua:f` alignment fuzz, `literals.lua:lexerror`
in a lexer-torture fixture) — §5, not filed.
- [#2461](https://github.com/squid-protocol/gitgalaxy/issues/2461) — `local function` not first
on its line (`local a; local function f(x)`); + the `literals.lua` lexer-torture nested-bracket
shielding gap. Found by the step 2.6 recall audit — §5.

### Full record

Expand Down
19 changes: 18 additions & 1 deletion docs/self_scan/tri_comparison_README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,24 @@ step 8 capstone is not done until its list is empty of unassessed entries.
**Standing answer — the only real GitGalaxy function-recall gaps across the whole corpus:**

<!-- RECALL_AUDIT:BEGIN -->
_(populated by the sweep — each entry is `<lang>: <source form> -> #<issue>`)_
As of the 2026-08-29 full sweep (`recall_audit.py` over all 31 tree-sitter-comparable languages),
the complete list — GitGalaxy's genuine cross-corpus function recall is ~99.9%:

| Language | Source form GitGalaxy misses | Issue |
|---|---|---|
| shell | a control-flow keyword (`for`/`if`/…) as a plain unquoted argument word desyncs Mode-D (`echo … limit for $x …` → `t_[Truncated]`) | [#2459](https://github.com/squid-protocol/gitgalaxy/issues/2459) |
| cpp / c | return type supplied by a macro — `__control_entrypoint(x) STDAPI Foo()`, `IFACEMETHODIMP_(HRESULT, Bar)` | [#2460](https://github.com/squid-protocol/gitgalaxy/issues/2460) |
| lua | a `local function` that is not the first statement on its line (`local a; local function f(x) … end`) | [#2461](https://github.com/squid-protocol/gitgalaxy/issues/2461) |
| dart | bodyless default constructors (`_Foo();`), the `extension` keyword, generic methods with `<T extends …>` return-type prefixes | [#2462](https://github.com/squid-protocol/gitgalaxy/issues/2462) |
| typescript | object-literal method shorthand (`{ return: async () => … }`, AsyncIterator protocol); bodyless overload signatures with a `=>`/nested-`<>` generic type-parameter list | [#2464](https://github.com/squid-protocol/gitgalaxy/issues/2464) |

Every other `tree-sitter-finds / GitGalaxy-misses` occurrence `recall_audit.py` prints was
individually assessed and is a comparison/audit-tool artifact — `#if 0` dead code (tree-sitter
has no preprocessor), function-like macro invocations (`OPCODE(X) {`), `_FORCE_INLINE_`-mangled
member parses, bodyless `= default` / `= delete`, tree-sitter naming a NeXT-era objc method by
its return type, or occurrence-alignment fuzz on a name defined many times. The accuracy audit
(`tree_sitter_accuracy_audit.py`) was corrected to stop folding those into GitGalaxy's recall
denominator; per-language detail is in each `docs/language_status/<lang>.md` §9.
<!-- RECALL_AUDIT:END -->

Everything else `recall_audit.py` prints is a comparison-tool artifact, catalogued per language
Expand Down
8 changes: 4 additions & 4 deletions gitgalaxy/standards/language_standards.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,12 @@
| Language | Func Recall | Func Precision | Class Recall | Class Precision |
| -------- | ----------- | -------------- | ------------ | --------------- |
| Apex | 100.0% | 100.0% | 100.0% | 100.0% |
| C | 99.7% | 99.5% | 100.0% | 100.0% |
| Cpp | 89.3% | 100.0% | 100.0% | 100.0% |
| C | 100.0% | 99.5% | 100.0% | 100.0% |
| Cpp | 99.9% | 100.0% | 100.0% | 100.0% |
| Csharp | 100.0% | 100.0% | 100.0% | 100.0% |
| Css | 100.0% | 100.0% | N/A | N/A |
| Dart | 99.5% | 99.3% | 100.0% | 100.0% |
| Fortran | 98.6% | 100.0% | 100.0% | 100.0% |
| Fortran | 100.0% | 100.0% | 100.0% | 100.0% |
| Go | 100.0% | 100.0% | 100.0% | 100.0% |
| Groovy | N/A | N/A | N/A | N/A |
| Haskell | 100.0% | 99.3% | 100.0% | 100.0% |
Expand All @@ -51,7 +51,7 @@
| Lua | 99.7% | 100.0% | N/A | 0.0% |
| Makefile | 100.0% | 100.0% | N/A | N/A |
| Matlab | 100.0% | 100.0% | N/A | N/A |
| Objective-C | 98.7% | 98.1% | 100.0% | 100.0% |
| Objective-C | 100.0% | 99.4% | 100.0% | 100.0% |
| Perl | 100.0% | 100.0% | 100.0% | 100.0% |
| Php | 100.0% | 99.9% | 100.0% | 100.0% |
| Powershell | 100.0% | 100.0% | 100.0% | 100.0% |
Expand Down
Loading
Loading