@holmes-lab/holmes-kit 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,71 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+ <!-- @implements A-SPEC-209 -->
8
+ ## [0.7.0] - 2026-09-02
9
+
10
+ GOAL-7langs completes: all six analysis axes (relations, ast, cfg, ddg, cdg, taint) are now
11
+ corpus-validated for all seven official languages — 42 cells, every one a measurement. The
12
+ README's language table becomes a byte-pinned render of the same derivation, so it can no
13
+ longer drift from what the code actually does.
14
+
15
+ ### Added
16
+
17
+ - **Taint for all seven languages** (REQ-524): five vocabularies join the table (selected by
18
+ extension, never unioned), the flow-sensitive lane generalizes from Python-only to every
19
+ language with a CFG, and two measured engine holes close (Java/C# call nodes including
20
+ constructors; Java callee vs receiver). Validated with positive AND negative controls per
21
+ language, then measured over ten corpora: Go/Rust/Java/C# report zero (library code — same
22
+ structural decomposition as before), C++ reports two REAL argv→execv flows in leveldb's test
23
+ harness (verified; benign by intent, exactly what a taint tool should surface).
24
+ - **Imports reach the graph in all seven languages** (REQ-525): extraction is a table row per
25
+ language; resolution is per-language semantics (Go strips the go.mod module prefix and fans
26
+ out to the package directory — with go.mod discovered by walking up from the file; Rust maps
27
+ crate::/super::/self:: and retries once without a trailing item segment; Java/C# resolve by
28
+ UNIQUE path suffix; C++ resolves quoted includes with extension preserved); ambiguity and
29
+ externals resolve to nothing, never to a guess. **Capability moved on measured arrival:
30
+ go 389, rust 64, java 2,688, csharp 316 (measurement overturned the ~0 expectation), cpp 482
31
+ resolved edges.**
32
+ - **The README language table is a render** (REQ-526): a marker block generated from the live
33
+ matrix plus a corpus-evidence column (functions, zero violations, stated limits — C++'s 32.1%
34
+ L1 refusal rate is in the table), byte-pinned by the suite like docs/language-support.md.
35
+ The old hand-written table claimed "Full Support" for every language before it was true.
36
+
37
+ <!-- @implements A-SPEC-209 -->
38
+ ## [0.6.0] - 2026-09-02
39
+
40
+ Three more languages earn corpus-validated control- and data-flow: Java, C#, and Rust join
41
+ TypeScript, Python and Go. Six of seven official languages now build CFG/DDG/CDG with zero
42
+ invariant violations over real open-source corpora. Every grade in the matrix is a measurement.
43
+
44
+ ### Added
45
+
46
+ - **Java CFG/DDG/CDG** (REQ-520): rides the TS chassis (same probed shapes for if/while/for/do
47
+ and the try clauses) plus the four seams where Java's semantics live: ONE switch node carrying
48
+ two styles (old groups fall through, arrow rules never touch), try-with-resources with resource
49
+ defs, catch parameters inside catch_formal_parameter, and field/method names excluded from
50
+ uses (`this.x = x` reads x once). **Measured over gson+junit4: 8,376/8,376 functions, zero
51
+ refusals, zero violations, 19,818 REACHING_DEF + 7,622 CDG edges.** The corpus caught three
52
+ would-have-shipped defects — named comment nodes, empty bodies (`while (c()) ;` — latent for
53
+ TS too), and Java's wrapperless else that lowered an else-if CONDITION as a statement.
54
+ - **C# CFG/DDG/CDG** (REQ-521): same face as Java, opposite semantics where it hurts — switch
55
+ fallthrough is a compile error (sections isolate), `yield` is the iterator protocol
56
+ (yield return continues, yield break exits), and `#if/#else` arms are ALTERNATIVES lowered as
57
+ branches. **Measured over Newtonsoft.Json+RestSharp: 9,184 functions, zero violations; the
58
+ only refusals are designed (preproc_elif 3, goto 1); 51 files (4.4%) refuse honestly at L1
59
+ where conditional compilation crosses syntax.** One sealed design was corrected mid-slice and
60
+ re-sealed: a declaration pattern binds at the switch HEADER, because a def on the point that
61
+ uses it can never reach.
62
+ - **Rust CFG/DDG/CDG** (REQ-522): control flow is an EXPRESSION in Rust (measured: if 1,170 /
63
+ match 468 / for 307 all inside expression_statement), which creates a new failure mode — a
64
+ zero-violation but HOLLOW graph. The corpus gate therefore demands branch edges exist, not
65
+ just that invariants hold. Match is exhaustive (no phantom escape — rustc enforces it), `?` is
66
+ an implicit early return (both paths leave the point), bare `loop` is infinite, let-else's
67
+ else arm diverges, and pattern bindings follow the lowercase-initial convention (documented
68
+ heuristic). **Measured over ripgrep+serde: 5,247/5,247 functions, zero refusals, zero
69
+ violations, 4,786 branch edges (avg 5.6 blocks/function), 13,647 REACHING_DEF + 6,808 CDG
70
+ edges.**
71
+
7
72
  <!-- @implements A-SPEC-209 -->
8
73
  ## [0.5.0] - 2026-09-02
9
74
 
package/README.md CHANGED
@@ -217,15 +217,21 @@ flowchart LR
217
217
  Holmes-Kit embeds native AST & Code Property Graph (D-CPG) analyzers to track causal relationships and anchor implementations across diverse technology stacks.
218
218
 
219
219
  ### 💻 Supported Programming Languages
220
- | Language | CPG Parser | Anchor Syntax | Dataflow Taint & RTM |
221
- | :--- | :--- | :--- | :---: |
222
- | **TypeScript / JavaScript** | Tree-sitter TypeScript/JS | `// @implements A-SPEC-XXX` | Full Support |
223
- | **Python** | Tree-sitter Python | `# @implements A-SPEC-XXX` | Full Support |
224
- | **Go** | Tree-sitter Go | `// @implements A-SPEC-XXX` | Full Support |
225
- | **Rust** | Tree-sitter Rust | `// @implements A-SPEC-XXX` | Full Support |
226
- | **Java** | Tree-sitter Java | `// @implements A-SPEC-XXX` | Full Support |
227
- | **C / C++** | Tree-sitter C/C++ | `// @implements A-SPEC-XXX` | Full Support |
228
- | **C# (.NET)** | Tree-sitter C# | `// @implements A-SPEC-XXX` | Full Support |
220
+
221
+ <!-- language-matrix:begin -->
222
+ | Language | relations | ast | cfg | ddg | cdg | taint | Corpus evidence |
223
+ | :--- | :---: | :---: | :---: | :---: | :---: | :---: | :--- |
224
+ | **TypeScript / JavaScript** | | | | | | | 10,929 functions (this repository), zero invariant violations |
225
+ | **Python** | | | | | | | 1,209 functions (jarvis), zero invariant violations |
226
+ | **C#** | | | | | | | 9,184 functions (Newtonsoft.Json + RestSharp), zero invariant violations — 4.4% of files refuse at L1 (preprocessor across syntax) |
227
+ | **Java** | | | | | | | 8,376 functions (gson + junit4), zero invariant violations |
228
+ | **Go** | | | | | | | 2,637 functions (gin + cobra), zero invariant violations |
229
+ | **Rust** | ● | ● | ● | ● | ● | ● | 5,247 functions (ripgrep + serde), zero invariant violations |
230
+ | **C++** | ● | ● | ● | ● | ● | ● | 1,762 functions (nlohmann + fmt + leveldb), zero invariant violations — 32.1% of template/macro-heavy files refuse at L1 — layers above speak only for what parses |
231
+
232
+ Every grade is a measurement, not a goal: a cell moves only when a real corpus proves it.
233
+ Full per-cell bases (and every stated limit) live in [docs/language-support.md](docs/language-support.md), which is generated from the same derivation and byte-pinned by the suite — as is this table.
234
+ <!-- language-matrix:end -->
229
235
 
230
236
  ### 🖥️ Supported Operating Systems & Runtimes
231
237
  | OS / Platform | Architecture | Status | Notes |
package/dist/.build-id CHANGED
@@ -1 +1 @@
1
- 8f00a9a-mtjc55io
1
+ 7cb32c4-mtjifuwa