Skip to content

Commit 6a1126f

Browse files
committed
docs: record the shared reach() walk in the language table
The dataflow note covers Go's #436 surface; the reach lift is cross-language and belongs beside the other all-languages entries, with #446 named as the one limitation left on that surface.
1 parent 5b641ae commit 6a1126f

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

‎CLAUDE.md‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,19 @@ absence claim in the result; `max_paths` caps per pair, never per call. The sour
4545
vocabulary is the caller's — no framework catalogue ships. Java shares the `formal_in` dependence
4646
probe above, so `taint` refuses on the same analyses the four verbs do.
4747

48+
**All four languages, since #436:** the reachability walk every local backend's slices and flow
49+
predicates run is **`commons.graphs.reach`**, lifted out of four byte-identical copies for the
50+
reason that lifted `shortest_walks` in leg 2.5b — it is a graph algorithm over an adjacency of
51+
strings and knows no language. Each backend's `_reach` is a one-liner over it, keeping only
52+
`direction` as its own concern. The lift carried a fix: a node must enter the next frontier **once**,
53+
and the spelling in all four copies appended it once per predecessor, so the frontier tracked path
54+
count rather than node count — answers were always right (a set holds no duplicates), but an
55+
unbounded walk did not terminate on a real application, and `depth=None` is the default on
56+
`paths_between` / `flows_to_*` / `taint`. Measured on nats-server: 151,417,783 frontier expansions
57+
at depth 8 against 670,450. **Known limitation, #446:** `shortest_walks` still cannot produce a
58+
witness for a flow `flows_to_*` confirms on a large application — its replay prunes on BFS layer
59+
boundaries but not toward the sink.
60+
4861
**Go, since #436 (the L3/L4 train):** the dataflow surface, with `PythonAnalysisBackend`'s names and
4962
signatures — `get_cfg`/`get_cdg`/`get_ddg`, `resolve_callable`/`resolve_value`,
5063
`slice_backward`/`slice_forward`/`backward_cone`, `reaches`/`paths_between`,

0 commit comments

Comments
 (0)