| Symbol-graph language coverage | REGISTRY 10/10; CALLER-GRAPH 10/10 -- 10 parser-backed / 0 foundational: the foundational tier is EMPTY, there is no Y tier (2026-08-09 skills-accuracy audit vs origin/main e3feaf5; quote the descriptor split, never the bare 10/10). All ten register (c, cpp, csharp, go, java, javascript, php, python, rust, typescript; C/C++ via lang_c.py/lang_cpp.py, closed by the Task 10D/10E final waves of the top-10 language-support campaign). This skill's hard-stop list does NOT key on blast_radius_floor/callers_count directly (the ## Hard stops section above names neither -- earlier text claimed it did, and it did not) -- the connection is hard-stop #6 (route-test.agreement == false), whose only exemption is "when using prepare's floor", and that floor IS blast_radius_floor (carrying callers_count) built by prepare_service.py's _build_prepare_blast_radius_floor -- which needs the AST caller path: every registered language now HAS it -- in-file AST refs/callers are real for all ten. Task 11 update (1.110.x): cross-file caller confirmation shipped for Java/PHP/C#/C/C++ via LanguageSpec.file_imports_symbol_from_definition + blast-radius target-symbol binding (#950/#952/#955/#957). Residual reverse-import / text-prefilter gaps may still appear as resolution_gaps on other shapes — quote live JSON, do not assume zero gaps. Go belongs in the parser-backed tier, and this line used to say 4/10 with go as "PARTIAL" -- corrected 2026-07-27. repo_map._symbol_navigation_descriptor's own docstring warns about exactly that mistake: "this tier currently also includes go, which several PR-comment summaries lump in with the 'foundational-only' languages below -- this undercounts it", because lang_go.go_references_and_calls is a full tree-sitter extractor (package-alias resolution, node-type-based ref_kind), not a regex fallback. Never hand-count this -- the product derives it live, so ask the product: python -c "import sys;sys.path.insert(0,'src');from tensor_grep.cli import repo_map as r;print(r._symbol_navigation_descriptor())", which on 2026-08-09 (skills-accuracy audit vs origin/main e3feaf5) prints parser-backed-refs-callers:c-cpp-csharp-go-java-javascript-php-python-rust-typescript+foundational-defs-imports-only: -- 10/0, tier EMPTY -- the 7/3 string this sentence originally quoted was the C#-wave snapshot, now superseded; the dated SUPERSEDED chain at the end of this row records every intermediate state and ends at the C++ wave's 10/0. (The prior "5 of 8 registry specs" denominator was also wrong -- the registry holds 10, and when that note was written 5 had references_and_calls is None. Run it from a CURRENT checkout: a stale tree reports only 5 registered languages and 0 foundational, which looks like a clean answer and is not.) THIRD failure, 2026-08-01 (this skill's own audit pass): a claim framed as "3 parser-backed / 5 foundational / 2 unresolved" invented a third "unresolved" tier from a field's ABSENCE and shipped an unconfirmed hedge as if it were a measurement. There is no third tier and never has been: _symbol_navigation_descriptor partitions every registered LanguageSpec by exactly one boolean test (references_and_calls is not None), so each of the 10 registered languages lands in parser-backed OR foundational, never both, never neither, never "unresolved". Re-verified live 2026-08-01 against this checkout: python -c "import sys;sys.path.insert(0,'src');from tensor_grep.cli import repo_map as r;print(r._symbol_navigation_descriptor())" -> parser-backed-refs-callers:go-javascript-python-rust-typescript+foundational-defs-imports-only:c-cpp-csharp-java-php -- 5 parser-backed + 5 foundational, 10 total, no third bucket. Three failures of the same claim in a row is the tell: do not hand-derive this split by any method (grep, memory, arithmetic on a partial count) -- run the one-liner above and quote its output verbatim. SUPERSEDED 2026-08-04 by PR #927 (Java promoted foundational -> parser-backed, Task 10A, in-file refs/callers only): the same one-liner now prints parser-backed-refs-callers:go-java-javascript-python-rust-typescript+foundational-defs-imports-only:c-cpp-csharp-php -- 6 parser-backed + 4 foundational, 10 total, still no third bucket. SUPERSEDED AGAIN 2026-08-04 by the C# wave (Task 10B, csharp promoted foundational -> parser-backed, in-file refs/callers only): the one-liner now prints parser-backed-refs-callers:csharp-go-java-javascript-python-rust-typescript+foundational-defs-imports-only:c-cpp-php -- 7 parser-backed / 3 foundational. Two promotions landed the same day, so treat ANY quoted descriptor in this file as a dated snapshot and re-run the command. Fourth failure, this row itself, 2026-08-04: PR #927 silently swapped the 2026-08-01 quote above for the post-#927 string while leaving the "still 5 parser-backed + 5 foundational" prose attached to it and dated it to a day the split could not have measured that value -- a live instance of the exact false-receipt failure this row exists to warn against. Never trust a quoted descriptor string without checking its date is consistent with its content; run the one-liner yourself. SUPERSEDED AGAIN 2026-08-04 by the PHP wave (Task 10C, php promoted foundational -> parser-backed, in-file refs/callers only): the one-liner now prints parser-backed-refs-callers:csharp-go-java-javascript-php-python-rust-typescript+foundational-defs-imports-only:c-cpp -- 8 parser-backed / 2 foundational, 10 total, still no third bucket. Three promotions have now landed against this row (Java, C#, PHP), each same-day as the prior in this campaign -- treat ANY quoted descriptor in this file as a dated snapshot and re-run the command rather than trust the number. SUPERSEDED AGAIN 2026-08-04 by the C wave (Task 10D, c promoted foundational -> parser-backed, in-file refs/callers only, mirroring the csharp/php shape -- C owns its own _c_parser() factory, so _c_references_and_calls_for_registry forwards path/symbol only, same as the csharp/php adapters): the one-liner now prints parser-backed-refs-callers:c-csharp-go-java-javascript-php-python-rust-typescript+foundational-defs-imports-only:cpp -- 9 parser-backed / 1 foundational, 10 total, still no third bucket. C's confirmable population is narrower than PHP's: only a call_expression to a bare-identifier function with a real in-file function_definition/prototype confirms (0.9, c-infile-function-declared); a call through a struct member, a function-pointer-variable call, and a function-like-macro invocation are ALL demoted (0.6) -- C has no receiver-type confirmation analogue (no methods, no declared receiver types) and this module does not fake one. Four promotions have now landed against this row (Java, C#, PHP, C), each same-day as the prior in this campaign -- treat ANY quoted descriptor in this file as a dated snapshot and re-run the command rather than trust the number. Accepted ceiling: class MACRO Name in C++ misparses -- do not re-chase. SUPERSEDED AGAIN 2026-08-04 by the C++ wave (Task 10E, cpp promoted foundational -> parser-backed, in-file refs/callers only -- the FINAL wave, closing the top-10 language-support campaign): the one-liner now prints parser-backed-refs-callers:c-cpp-csharp-go-java-javascript-php-python-rust-typescript+foundational-defs-imports-only: -- 10 parser-backed / 0 foundational, 10 total -- the foundational tier is EMPTY. Every registered language now carries a real references_and_calls extractor; the "PARSER-BACKED for X; FOUNDATIONAL-TIER for Y" split framing at the start of this row is retired -- there is no more Y. The remaining gap for ALL ten languages is cross-file caller confirmation, which still relies on the same text prefilter (a resolution_gaps entry names it per language); the prepare floor (blast_radius_floor/callers_count) that hard-stop #6's exemption names keys on in-file AST confirmation, which every language now has. C++'s confirmable population is narrower than PHP's/Java's/C#'s by deliberate choice, not oversight: call_expression to a bare identifier or a qualified name (Foo::bar()) with a real in-file function/method declaration confirms (0.9, cpp-infile-function-declared), as does an explicit this->method() call (the one receiver-typed shape whose type is syntactically fixed, no local-declaration lookup needed); an arbitrary receiver call (w.method(), p->method()) NEVER confirms -- C++'s real inheritance and auto make a general receiver-type walk unsound for the common case, so this module chooses the honest narrower band over a plausible-but-wrong wider one (see lang_cpp.py's TASK 10E docstring block for the full reasoning). Five promotions have now landed against this row (Java, C#, PHP, C, C++), each same-day as the prior in this campaign -- treat ANY quoted descriptor in this file as a dated snapshot and re-run the command rather than trust the number. |