7
Files
536
Nodes
1138
Edges
168
Data values
49
Phi
9
State regions
3
Explicit raises
4
Defects
16
Motifs
MVP pipeline
Repository → Source fingerprint → AST/Symbols → SSA-like Data Flow → State Regions → Exception Flow → Typed CISG → Findings / Motifs
v0.2 adds versioned local values, conservative phi merges, state regions, explicit raise/except flow, and definition-time alias edges. Dynamic points-to and concurrency remain unresolved by design.
Metrics
{
"loaded_files": 7,
"nodes": 536,
"edges": 1138,
"node_types": {
"file": 7,
"function": 27,
"class": 1,
"method": 2,
"boundary_module": 7,
"data_value": 168,
"data_sink": 42,
"control": 73,
"data_use": 34,
"data_phi": 49,
"data_undefined": 35,
"boundary_call": 65,
"state_region": 9,
"module_binding": 9,
"exception_event": 3,
"boundary_exception": 1,
"exception_handler": 3,
"effect": 1
},
"edge_types": {
"contains": 30,
"imports": 27,
"defines": 217,
"contains_data": 76,
"returns_value": 97,
"controls": 73,
"flows_to": 198,
"guards": 78,
"phi_input": 98,
"calls": 196,
"aliases_at_definition": 5,
"reads_state": 16,
"reads_binding": 10,
"raises": 3,
"exception_flow": 2,
"contains_exception_handler": 3,
"caught_by": 1,
"effect": 1,
"writes_state": 7
},
"resolved_local_calls": 34,
"boundary_calls": 162,
"findings_by_category": {
"defect": 4,
"hotspot": 16
},
"findings_by_severity": {
"high": 2,
"medium": 2,
"info": 16
},
"motif_instances": 16,
"motif_clusters": 7,
"data_values": 168,
"phi_nodes": 49,
"data_edges": 693,
"alias_edges": 5,
"state_regions": 9,
"state_reads": 16,
"state_writes": 7,
"module_binding_reads": 10,
"exception_handlers": 3,
"explicit_raises": 3,
"unresolved_local_uses": 0,
"warnings": 0
}Warnings
- None
Code-Induced Semantic Graph
Overview shows 37 of 37 file/class/function entities. Full graph is in cisg.json / cisg.graphml.
Node evidence
Click a node.
SSA-like data flow
Shows local value flow, phi inputs, control guards, returns/yields, and definition-time alias edges. Full export: dataflow.json.
| Relation | Source | Target | Evidence | Status |
|---|---|---|---|---|
| returns_value | symbol#0 | return@10 | repo_semantic/architecture_reconstruction.py:10 | observed |
| returns_value | path#0 | return@10 | repo_semantic/architecture_reconstruction.py:10 | observed |
| flows_to | path#0 | nodes#1 | repo_semantic/architecture_reconstruction.py:14 | observed |
| guards | path#0 | for_loop | repo_semantic/architecture_reconstruction.py:15 | observed |
| flows_to | path#0 | step#1 | repo_semantic/architecture_reconstruction.py:15 | observed |
| guards | step#1 | branch | repo_semantic/architecture_reconstruction.py:16 | observed |
| flows_to | nodes#1 | expr@17 | repo_semantic/architecture_reconstruction.py:17 | observed |
| flows_to | step#1 | expr@17 | repo_semantic/architecture_reconstruction.py:17 | observed |
| flows_to | step#1 | boundary#1 | repo_semantic/architecture_reconstruction.py:19 | observed |
| flows_to | nodes#1 | expr@20 | repo_semantic/architecture_reconstruction.py:20 | observed |
| flows_to | boundary#1 | expr@20 | repo_semantic/architecture_reconstruction.py:20 | observed |
| phi_input | boundary#1 | boundary#2 | repo_semantic/architecture_reconstruction.py:16 | strongly_inferred |
| phi_input | boundary:undefined | boundary#2 | repo_semantic/architecture_reconstruction.py:16 | unresolved |
| phi_input | boundary#2 | boundary#3 | repo_semantic/architecture_reconstruction.py:15 | strongly_inferred |
| phi_input | boundary:undefined | boundary#3 | repo_semantic/architecture_reconstruction.py:15 | unresolved |
| phi_input | step#1 | step#2 | repo_semantic/architecture_reconstruction.py:15 | strongly_inferred |
| phi_input | step:undefined | step#2 | repo_semantic/architecture_reconstruction.py:15 | unresolved |
| flows_to | nodes#1 | flow#1 | repo_semantic/architecture_reconstruction.py:21 | observed |
| guards | path#0 | branch | repo_semantic/architecture_reconstruction.py:23 | observed |
| flows_to | suffixes#1 | expr@24 | repo_semantic/architecture_reconstruction.py:24 | observed |
| guards | path#0 | branch | repo_semantic/architecture_reconstruction.py:25 | observed |
| flows_to | suffixes#1 | expr@26 | repo_semantic/architecture_reconstruction.py:26 | observed |
| guards | path#0 | branch | repo_semantic/architecture_reconstruction.py:27 | observed |
| flows_to | suffixes#1 | expr@28 | repo_semantic/architecture_reconstruction.py:28 | observed |
| guards | suffixes#1 | branch | repo_semantic/architecture_reconstruction.py:29 | observed |
| flows_to | flow#1 | flow#2 | repo_semantic/architecture_reconstruction.py:30 | observed |
| flows_to | suffixes#1 | flow#2 | repo_semantic/architecture_reconstruction.py:30 | observed |
| phi_input | flow#1 | flow#3 | repo_semantic/architecture_reconstruction.py:29 | strongly_inferred |
| phi_input | flow#2 | flow#3 | repo_semantic/architecture_reconstruction.py:29 | strongly_inferred |
| returns_value | flow#3 | return@31 | repo_semantic/architecture_reconstruction.py:31 | observed |
| guards | ar#0 | for_loop | repo_semantic/architecture_reconstruction.py:39 | observed |
| flows_to | ar#0 | edge#1 | repo_semantic/architecture_reconstruction.py:39 | observed |
| guards | edge#1 | branch | repo_semantic/architecture_reconstruction.py:40 | observed |
| flows_to | local_paths#1 | expr@44 | repo_semantic/architecture_reconstruction.py:44 | observed |
| flows_to | edge#1 | expr@44 | repo_semantic/architecture_reconstruction.py:44 | observed |
| flows_to | local_paths#1 | expr@45 | repo_semantic/architecture_reconstruction.py:45 | observed |
| flows_to | edge#1 | expr@45 | repo_semantic/architecture_reconstruction.py:45 | observed |
| phi_input | edge#1 | edge#2 | repo_semantic/architecture_reconstruction.py:39 | strongly_inferred |
| phi_input | edge:undefined | edge#2 | repo_semantic/architecture_reconstruction.py:39 | unresolved |
| flows_to | ar#0 | entrypoint_paths#1 | repo_semantic/architecture_reconstruction.py:47 | observed |
| guards | local_paths#1 | for_loop | repo_semantic/architecture_reconstruction.py:49 | observed |
| guards | entrypoint_paths#1 | for_loop | repo_semantic/architecture_reconstruction.py:49 | observed |
| flows_to | local_paths#1 | path#1 | repo_semantic/architecture_reconstruction.py:49 | observed |
| flows_to | entrypoint_paths#1 | path#1 | repo_semantic/architecture_reconstruction.py:49 | observed |
| flows_to | incoming#1 | inc#1 | repo_semantic/architecture_reconstruction.py:50 | observed |
| flows_to | path#1 | inc#1 | repo_semantic/architecture_reconstruction.py:50 | observed |
| flows_to | outgoing#1 | out#1 | repo_semantic/architecture_reconstruction.py:51 | observed |
| flows_to | path#1 | out#1 | repo_semantic/architecture_reconstruction.py:51 | observed |
| guards | path#1 | branch | repo_semantic/architecture_reconstruction.py:52 | observed |
| guards | entrypoint_paths#1 | branch | repo_semantic/architecture_reconstruction.py:52 | observed |
| guards | out#1 | branch | repo_semantic/architecture_reconstruction.py:52 | observed |
| guards | inc#1 | branch | repo_semantic/architecture_reconstruction.py:54 | observed |
| guards | out#1 | branch | repo_semantic/architecture_reconstruction.py:54 | observed |
| guards | inc#1 | branch | repo_semantic/architecture_reconstruction.py:56 | observed |
| guards | out#1 | branch | repo_semantic/architecture_reconstruction.py:56 | observed |
| guards | out#1 | branch | repo_semantic/architecture_reconstruction.py:58 | observed |
| flows_to | path#1 | role#5 | repo_semantic/architecture_reconstruction.py:61 | observed |
| flows_to | entrypoint_paths#1 | role#5 | repo_semantic/architecture_reconstruction.py:61 | observed |
| phi_input | role#4 | role#6 | repo_semantic/architecture_reconstruction.py:58 | strongly_inferred |
| phi_input | role#5 | role#6 | repo_semantic/architecture_reconstruction.py:58 | strongly_inferred |
| phi_input | role#6 | role#7 | repo_semantic/architecture_reconstruction.py:56 | strongly_inferred |
| phi_input | role#3 | role#7 | repo_semantic/architecture_reconstruction.py:56 | strongly_inferred |
| phi_input | role#7 | role#8 | repo_semantic/architecture_reconstruction.py:54 | strongly_inferred |
| phi_input | role#2 | role#8 | repo_semantic/architecture_reconstruction.py:54 | strongly_inferred |
| phi_input | role#1 | role#9 | repo_semantic/architecture_reconstruction.py:52 | strongly_inferred |
| phi_input | role#8 | role#9 | repo_semantic/architecture_reconstruction.py:52 | strongly_inferred |
| flows_to | rows#1 | expr@62 | repo_semantic/architecture_reconstruction.py:62 | observed |
| flows_to | path#1 | expr@62 | repo_semantic/architecture_reconstruction.py:64 | observed |
| flows_to | role#9 | expr@62 | repo_semantic/architecture_reconstruction.py:65 | observed |
| flows_to | inc#1 | expr@62 | repo_semantic/architecture_reconstruction.py:66 | observed |
| flows_to | out#1 | expr@62 | repo_semantic/architecture_reconstruction.py:67 | observed |
| phi_input | inc#1 | inc#2 | repo_semantic/architecture_reconstruction.py:49 | strongly_inferred |
| phi_input | inc:undefined | inc#2 | repo_semantic/architecture_reconstruction.py:49 | unresolved |
| phi_input | out#1 | out#2 | repo_semantic/architecture_reconstruction.py:49 | strongly_inferred |
| phi_input | out:undefined | out#2 | repo_semantic/architecture_reconstruction.py:49 | unresolved |
| phi_input | path#1 | path#2 | repo_semantic/architecture_reconstruction.py:49 | strongly_inferred |
| phi_input | path:undefined | path#2 | repo_semantic/architecture_reconstruction.py:49 | unresolved |
| phi_input | role#9 | role#10 | repo_semantic/architecture_reconstruction.py:49 | strongly_inferred |
| phi_input | role:undefined | role#10 | repo_semantic/architecture_reconstruction.py:49 | unresolved |
| returns_value | rows#1 | return@71 | repo_semantic/architecture_reconstruction.py:71 | observed |
| guards | paths#0 | for_loop | repo_semantic/architecture_reconstruction.py:77 | observed |
| flows_to | paths#0 | path#1 | repo_semantic/architecture_reconstruction.py:77 | observed |
| aliases_at_definition | paths#0 | path#1 | repo_semantic/architecture_reconstruction.py:77 | observed |
| guards | path#1 | for_loop | repo_semantic/architecture_reconstruction.py:78 | observed |
| flows_to | path#1 | step#1 | repo_semantic/architecture_reconstruction.py:78 | observed |
| guards | step#1 | branch | repo_semantic/architecture_reconstruction.py:79 | observed |
| flows_to | step#1 | target#1 | repo_semantic/architecture_reconstruction.py:81 | observed |
| flows_to | step#1 | source#1 | repo_semantic/architecture_reconstruction.py:82 | observed |
| flows_to | target#1 | item#1 | repo_semantic/architecture_reconstruction.py:83 | observed |
| flows_to | source#1 | item#1 | repo_semantic/architecture_reconstruction.py:83 | observed |
| guards | item#1 | branch | repo_semantic/architecture_reconstruction.py:84 | observed |
| guards | seen#1 | branch | repo_semantic/architecture_reconstruction.py:84 | observed |
| flows_to | found#1 | expr@85 | repo_semantic/architecture_reconstruction.py:85 | observed |
| flows_to | item#1 | expr@85 | repo_semantic/architecture_reconstruction.py:85 | observed |
| flows_to | seen#1 | expr@86 | repo_semantic/architecture_reconstruction.py:86 | observed |
| flows_to | item#1 | expr@86 | repo_semantic/architecture_reconstruction.py:86 | observed |
| phi_input | item#1 | item#2 | repo_semantic/architecture_reconstruction.py:78 | strongly_inferred |
| phi_input | item:undefined | item#2 | repo_semantic/architecture_reconstruction.py:78 | unresolved |
| phi_input | source#1 | source#2 | repo_semantic/architecture_reconstruction.py:78 | strongly_inferred |
| phi_input | source:undefined | source#2 | repo_semantic/architecture_reconstruction.py:78 | unresolved |
| phi_input | step#1 | step#2 | repo_semantic/architecture_reconstruction.py:78 | strongly_inferred |
| phi_input | step:undefined | step#2 | repo_semantic/architecture_reconstruction.py:78 | unresolved |
| phi_input | target#1 | target#2 | repo_semantic/architecture_reconstruction.py:78 | strongly_inferred |
| phi_input | target:undefined | target#2 | repo_semantic/architecture_reconstruction.py:78 | unresolved |
| phi_input | item#2 | item#3 | repo_semantic/architecture_reconstruction.py:77 | strongly_inferred |
| phi_input | item:undefined | item#3 | repo_semantic/architecture_reconstruction.py:77 | unresolved |
| phi_input | path#1 | path#2 | repo_semantic/architecture_reconstruction.py:77 | strongly_inferred |
| phi_input | path:undefined | path#2 | repo_semantic/architecture_reconstruction.py:77 | unresolved |
| phi_input | source#2 | source#3 | repo_semantic/architecture_reconstruction.py:77 | strongly_inferred |
| phi_input | source:undefined | source#3 | repo_semantic/architecture_reconstruction.py:77 | unresolved |
| phi_input | step#2 | step#3 | repo_semantic/architecture_reconstruction.py:77 | strongly_inferred |
| phi_input | step:undefined | step#3 | repo_semantic/architecture_reconstruction.py:77 | unresolved |
| phi_input | target#2 | target#3 | repo_semantic/architecture_reconstruction.py:77 | strongly_inferred |
| phi_input | target:undefined | target#3 | repo_semantic/architecture_reconstruction.py:77 | unresolved |
| returns_value | found#1 | return@87 | repo_semantic/architecture_reconstruction.py:87 | observed |
| flows_to | ar#0 | items#1 | repo_semantic/architecture_reconstruction.py:91 | observed |
| flows_to | paths#0 | truncated#1 | repo_semantic/architecture_reconstruction.py:92 | observed |
| flows_to | paths#0 | cycles#1 | repo_semantic/architecture_reconstruction.py:93 | observed |
| flows_to | paths#0 | no_calls#1 | repo_semantic/architecture_reconstruction.py:94 | observed |
| guards | truncated#1 | branch | repo_semantic/architecture_reconstruction.py:95 | observed |
| flows_to | items#1 | expr@96 | repo_semantic/architecture_reconstruction.py:96 | observed |
| flows_to | truncated#1 | expr@96 | repo_semantic/architecture_reconstruction.py:96 | observed |
| guards | cycles#1 | branch | repo_semantic/architecture_reconstruction.py:97 | observed |
| flows_to | items#1 | expr@98 | repo_semantic/architecture_reconstruction.py:98 | observed |
| flows_to | cycles#1 | expr@98 | repo_semantic/architecture_reconstruction.py:98 | observed |
| guards | no_calls#1 | branch | repo_semantic/architecture_reconstruction.py:99 | observed |
| flows_to | items#1 | expr@100 | repo_semantic/architecture_reconstruction.py:100 | observed |
| flows_to | no_calls#1 | expr@100 | repo_semantic/architecture_reconstruction.py:100 | observed |
| guards | paths#0 | branch | repo_semantic/architecture_reconstruction.py:101 | observed |
| flows_to | items#1 | expr@102 | repo_semantic/architecture_reconstruction.py:102 | observed |
| returns_value | items#1 | return@103 | repo_semantic/architecture_reconstruction.py:103 | observed |
| flows_to | ar#0 | resolved_calls#1 | repo_semantic/architecture_reconstruction.py:109 | observed |
| flows_to | ar#0 | overview#1 | repo_semantic/architecture_reconstruction.py:113 | observed |
| flows_to | ar#0 | overview#1 | repo_semantic/architecture_reconstruction.py:114 | observed |
| flows_to | resolved_calls#1 | overview#1 | repo_semantic/architecture_reconstruction.py:114 | observed |
| flows_to | paths#0 | overview#1 | repo_semantic/architecture_reconstruction.py:115 | observed |
| flows_to | paths#0 | representative#1 | repo_semantic/architecture_reconstruction.py:119 | observed |
| flows_to | representative#1 | core_flow#1 | repo_semantic/architecture_reconstruction.py:122 | observed |
| returns_value | overview#1 | return@124 | repo_semantic/architecture_reconstruction.py:125 | observed |
| returns_value | core_flow#1 | return@124 | repo_semantic/architecture_reconstruction.py:126 | observed |
| returns_value | ar#0 | return@124 | repo_semantic/architecture_reconstruction.py:127 | observed |
| returns_value | ar#0 | return@124 | repo_semantic/architecture_reconstruction.py:136 | observed |
| returns_value | paths#0 | return@124 | repo_semantic/architecture_reconstruction.py:138 | observed |
| returns_value | ar#0 | return@124 | repo_semantic/architecture_reconstruction.py:139 | observed |
| returns_value | paths#0 | return@124 | repo_semantic/architecture_reconstruction.py:139 | observed |
| returns_value | edge#0 | return@13 | repo_semantic/execution_paths.py:14 | observed |
| returns_value | edge#0 | return@13 | repo_semantic/execution_paths.py:15 | observed |
| returns_value | edge#0 | return@13 | repo_semantic/execution_paths.py:16 | observed |
| returns_value | edge#0 | return@13 | repo_semantic/execution_paths.py:17 | observed |
| flows_to | steps#0 | relation_ids#1 | repo_semantic/execution_paths.py:22 | observed |
| flows_to | entrypoint_path#0 | raw#1 | repo_semantic/execution_paths.py:23 | observed |
| flows_to | entrypoint_symbol#0 | raw#1 | repo_semantic/execution_paths.py:23 | observed |
| flows_to | relation_ids#1 | raw#1 | repo_semantic/execution_paths.py:23 | observed |
| returns_value | raw#1 | return@24 | repo_semantic/execution_paths.py:24 | observed |
| returns_value | edge#0 | return@28 | repo_semantic/execution_paths.py:29 | observed |
| returns_value | edge#0 | return@28 | repo_semantic/execution_paths.py:30 | observed |
| returns_value | edge#0 | return@28 | repo_semantic/execution_paths.py:31 | observed |
| returns_value | edge#0 | return@28 | repo_semantic/execution_paths.py:32 | observed |
| returns_value | edge#0 | return@28 | repo_semantic/execution_paths.py:33 | observed |
| returns_value | edge#0 | return@28 | repo_semantic/execution_paths.py:34 | observed |
| returns_value | edge#0 | return@28 | repo_semantic/execution_paths.py:35 | observed |
| returns_value | edge#0 | return@28 | repo_semantic/execution_paths.py:36 | observed |
| returns_value | edge#0 | return@28 | repo_semantic/execution_paths.py:37 | observed |
| returns_value | edge#0 | return@28 | repo_semantic/execution_paths.py:38 | observed |
| returns_value | edge#0 | return@28 | repo_semantic/execution_paths.py:39 | observed |
| returns_value | entrypoint#0 | return@51 | repo_semantic/execution_paths.py:52 | observed |
| returns_value | steps#0 | return@51 | repo_semantic/execution_paths.py:52 | observed |
| returns_value | entrypoint#0 | return@51 | repo_semantic/execution_paths.py:53 | observed |
| returns_value | entrypoint#0 | return@51 | repo_semantic/execution_paths.py:54 | observed |
| returns_value | steps#0 | return@51 | repo_semantic/execution_paths.py:55 | observed |
| returns_value | terminal_reason#0 | return@51 | repo_semantic/execution_paths.py:56 | observed |
| returns_value | truncated#0 | return@51 | repo_semantic/execution_paths.py:57 | observed |
| returns_value | cycle_detected#0 | return@51 | repo_semantic/execution_paths.py:58 | observed |
| flows_to | entrypoint#0 | exact#1 | repo_semantic/execution_paths.py:63 | observed |
| guards | adjacency#0 | branch | repo_semantic/execution_paths.py:64 | observed |
| guards | exact#1 | branch | repo_semantic/execution_paths.py:64 | observed |
| returns_value | exact#1 | return@65 | repo_semantic/execution_paths.py:65 | observed |
| returns_value | adjacency#0 | return@65 | repo_semantic/execution_paths.py:65 | observed |
| flows_to | entrypoint#0 | file_level#1 | repo_semantic/execution_paths.py:67 | observed |
| guards | adjacency#0 | branch | repo_semantic/execution_paths.py:68 | observed |
| guards | file_level#1 | branch | repo_semantic/execution_paths.py:68 | observed |
| returns_value | file_level#1 | return@69 | repo_semantic/execution_paths.py:69 | observed |
| returns_value | adjacency#0 | return@69 | repo_semantic/execution_paths.py:69 | observed |
| guards | entrypoint#0 | branch | repo_semantic/execution_paths.py:74 | observed |
| flows_to | adjacency#0 | groups#1 | repo_semantic/execution_paths.py:77 | observed |
| flows_to | entrypoint#0 | groups#1 | repo_semantic/execution_paths.py:78 | observed |
| flows_to | groups#1 | expr@80 | repo_semantic/execution_paths.py:80 | observed |
| returns_value | groups#1 | return@81 | repo_semantic/execution_paths.py:81 | observed |
| guards | max_depth#0 | branch | repo_semantic/execution_paths.py:98 | observed |
| guards | max_paths_per_entrypoint#0 | branch | repo_semantic/execution_paths.py:100 | observed |
| guards | relations#0 | for_loop | repo_semantic/execution_paths.py:104 | observed |
| flows_to | relations#0 | edge#1 | repo_semantic/execution_paths.py:104 | observed |
| aliases_at_definition | relations#0 | edge#1 | repo_semantic/execution_paths.py:104 | observed |
| guards | edge#1 | branch | repo_semantic/execution_paths.py:105 | observed |
| flows_to | adjacency#1 | expr@107 | repo_semantic/execution_paths.py:107 | observed |
| flows_to | edge#1 | expr@107 | repo_semantic/execution_paths.py:107 | observed |
| phi_input | edge#1 | edge#2 | repo_semantic/execution_paths.py:104 | strongly_inferred |
| phi_input | edge:undefined | edge#2 | repo_semantic/execution_paths.py:104 | unresolved |
| guards | adjacency#1 | for_loop | repo_semantic/execution_paths.py:108 | observed |
| flows_to | adjacency#1 | edges#1 | repo_semantic/execution_paths.py:108 | observed |
| flows_to | edges#1 | expr@109 | repo_semantic/execution_paths.py:109 | observed |
| phi_input | edges#1 | edges#2 | repo_semantic/execution_paths.py:108 | strongly_inferred |
| phi_input | edges:undefined | edges#2 | repo_semantic/execution_paths.py:108 | unresolved |
| guards | entrypoints#0 | for_loop | repo_semantic/execution_paths.py:113 | observed |
| flows_to | entrypoints#0 | entrypoint#1 | repo_semantic/execution_paths.py:113 | observed |
| flows_to | entrypoint#1 | seed_groups#1 | repo_semantic/execution_paths.py:115 | observed |
| flows_to | adjacency#1 | seed_groups#1 | repo_semantic/execution_paths.py:115 | observed |
| guards | seed_groups#1 | branch | repo_semantic/execution_paths.py:116 | observed |
| flows_to | emitted#1 | expr@117 | repo_semantic/execution_paths.py:117 | observed |
| flows_to | entrypoint#1 | expr@117 | repo_semantic/execution_paths.py:117 | observed |
| flows_to | all_paths#1 | expr@118 | repo_semantic/execution_paths.py:118 | observed |
| flows_to | emitted#1 | expr@118 | repo_semantic/execution_paths.py:118 | observed |
| guards | seed_groups#1 | for_loop | repo_semantic/execution_paths.py:157 | observed |
| flows_to | seed_groups#1 | state#1 | repo_semantic/execution_paths.py:157 | observed |
| aliases_at_definition | seed_groups#1 | state#1 | repo_semantic/execution_paths.py:157 | observed |
| flows_to | seed_groups#1 | outgoing#1 | repo_semantic/execution_paths.py:157 | observed |
| aliases_at_definition | seed_groups#1 | outgoing#1 | repo_semantic/execution_paths.py:157 | observed |
| guards | emitted#1 | branch | repo_semantic/execution_paths.py:158 | observed |
| guards | max_paths_per_entrypoint#0 | branch | repo_semantic/execution_paths.py:158 | observed |
| flows_to | walk#1 | expr@160 | repo_semantic/execution_paths.py:160 | observed |
| flows_to | state#1 | expr@160 | repo_semantic/execution_paths.py:160 | observed |
| flows_to | outgoing#1 | expr@160 | repo_semantic/execution_paths.py:160 | observed |
| phi_input | outgoing#1 | outgoing#2 | repo_semantic/execution_paths.py:157 | strongly_inferred |
| phi_input | outgoing:undefined | outgoing#2 | repo_semantic/execution_paths.py:157 | unresolved |
| phi_input | state#1 | state#2 | repo_semantic/execution_paths.py:157 | strongly_inferred |
| phi_input | state:undefined | state#2 | repo_semantic/execution_paths.py:157 | unresolved |
| flows_to | all_paths#1 | expr@162 | repo_semantic/execution_paths.py:162 | observed |
| flows_to | emitted#1 | expr@162 | repo_semantic/execution_paths.py:162 | observed |
| flows_to | max_paths_per_entrypoint#0 | expr@162 | repo_semantic/execution_paths.py:162 | observed |
| phi_input | emitted#1 | emitted#2 | repo_semantic/execution_paths.py:113 | strongly_inferred |
| phi_input | emitted:undefined | emitted#2 | repo_semantic/execution_paths.py:113 | unresolved |
| phi_input | entrypoint#1 | entrypoint#2 | repo_semantic/execution_paths.py:113 | strongly_inferred |
| phi_input | entrypoint:undefined | entrypoint#2 | repo_semantic/execution_paths.py:113 | unresolved |
| phi_input | outgoing#2 | outgoing#3 | repo_semantic/execution_paths.py:113 | strongly_inferred |
| phi_input | outgoing:undefined | outgoing#3 | repo_semantic/execution_paths.py:113 | unresolved |
| phi_input | seed_groups#1 | seed_groups#2 | repo_semantic/execution_paths.py:113 | strongly_inferred |
| phi_input | seed_groups:undefined | seed_groups#2 | repo_semantic/execution_paths.py:113 | unresolved |
| phi_input | state#2 | state#3 | repo_semantic/execution_paths.py:113 | strongly_inferred |
| phi_input | state:undefined | state#3 | repo_semantic/execution_paths.py:113 | unresolved |
| phi_input | walk#1 | walk#2 | repo_semantic/execution_paths.py:113 | strongly_inferred |
| phi_input | walk:undefined | walk#2 | repo_semantic/execution_paths.py:113 | unresolved |
| returns_value | all_paths#1 | return@164 | repo_semantic/execution_paths.py:164 | observed |
| guards | value#0 | branch | repo_semantic/grounding.py:20 | observed |
| flows_to | value#0 | value#1 | repo_semantic/grounding.py:22 | observed |
| returns_value | value#1 | return@23 | repo_semantic/grounding.py:23 | observed |
| returns_value | limit#0 | return@23 | repo_semantic/grounding.py:23 | observed |
| flows_to | ar#0 | reconstruction#1 | repo_semantic/grounding.py:28 | observed |
| guards | ar#0 | for_loop | repo_semantic/grounding.py:56 | observed |
| flows_to | ar#0 | node#1 | repo_semantic/grounding.py:56 | observed |
| phi_input | node#1 | node#2 | repo_semantic/grounding.py:56 | strongly_inferred |
| phi_input | node:undefined | node#2 | repo_semantic/grounding.py:56 | unresolved |
| guards | ar#0 | for_loop | repo_semantic/grounding.py:71 | observed |
| flows_to | ar#0 | block#1 | repo_semantic/grounding.py:71 | observed |
| phi_input | block#1 | block#2 | repo_semantic/grounding.py:71 | strongly_inferred |
| phi_input | block:undefined | block#2 | repo_semantic/grounding.py:71 | unresolved |
| guards | ar#0 | for_loop | repo_semantic/grounding.py:90 | observed |
| flows_to | ar#0 | edge#1 | repo_semantic/grounding.py:90 | observed |
| flows_to | edge#1 | evidence_id#1 | repo_semantic/grounding.py:91 | observed |
| phi_input | edge#1 | edge#2 | repo_semantic/grounding.py:90 | strongly_inferred |
| phi_input | edge:undefined | edge#2 | repo_semantic/grounding.py:90 | unresolved |
| phi_input | evidence_id#1 | evidence_id#2 | repo_semantic/grounding.py:90 | strongly_inferred |
| phi_input | evidence_id:undefined | evidence_id#2 | repo_semantic/grounding.py:90 | unresolved |
| guards | ar#0 | for_loop | repo_semantic/grounding.py:108 | observed |
| flows_to | ar#0 | path#1 | repo_semantic/grounding.py:108 | observed |
| phi_input | path#1 | path#2 | repo_semantic/grounding.py:108 | strongly_inferred |
| phi_input | path:undefined | path#2 | repo_semantic/grounding.py:108 | unresolved |
| guards | catalog#1 | branch | repo_semantic/grounding.py:122 | observed |
| guards | max_items#0 | branch | repo_semantic/grounding.py:122 | observed |
| flows_to | catalog#1 | selected#1 | repo_semantic/grounding.py:125 | observed |
| flows_to | priority#1 | selected#1 | repo_semantic/grounding.py:125 | observed |
| flows_to | max_items#0 | selected#1 | repo_semantic/grounding.py:125 | observed |
| flows_to | selected#1 | catalog#2 | repo_semantic/grounding.py:126 | observed |
| phi_input | catalog#2 | catalog#3 | repo_semantic/grounding.py:122 | strongly_inferred |
| phi_input | catalog#1 | catalog#3 | repo_semantic/grounding.py:122 | strongly_inferred |
| phi_input | priority#1 | priority#2 | repo_semantic/grounding.py:122 | strongly_inferred |
| phi_input | priority:undefined | priority#2 | repo_semantic/grounding.py:122 | unresolved |
| phi_input | selected#1 | selected#2 | repo_semantic/grounding.py:122 | strongly_inferred |
| phi_input | selected:undefined | selected#2 | repo_semantic/grounding.py:122 | unresolved |
| returns_value | catalog#3 | return@128 | repo_semantic/grounding.py:128 | observed |
| flows_to | requested_sections#0 | sections#1 | repo_semantic/grounding.py:136 | observed |
| flows_to | ar#0 | catalog#1 | repo_semantic/grounding.py:137 | observed |
| flows_to | ar#0 | architecture#1 | repo_semantic/grounding.py:138 | observed |
| returns_value | audience#0 | return@139 | repo_semantic/grounding.py:141 | observed |
| returns_value | sections#1 | return@139 | repo_semantic/grounding.py:142 | observed |
| returns_value | ar#0 | return@139 | repo_semantic/grounding.py:144 | observed |
| returns_value | ar#0 | return@139 | repo_semantic/grounding.py:145 | observed |
| returns_value | ar#0 | return@139 | repo_semantic/grounding.py:146 | observed |
| returns_value | ar#0 | return@139 | repo_semantic/grounding.py:147 | observed |
| returns_value | ar#0 | return@139 | repo_semantic/grounding.py:148 | observed |
| returns_value | ar#0 | return@139 | repo_semantic/grounding.py:149 | observed |
| returns_value | ar#0 | return@139 | repo_semantic/grounding.py:150 | observed |
| returns_value | ar#0 | return@139 | repo_semantic/grounding.py:151 | observed |
| returns_value | ar#0 | return@139 | repo_semantic/grounding.py:152 | observed |
| returns_value | architecture#1 | return@139 | repo_semantic/grounding.py:154 | observed |
| returns_value | catalog#1 | return@139 | repo_semantic/grounding.py:155 | observed |
| flows_to | from_snapshot_id#0 | raw#1 | repo_semantic/historical_timeline.py:12 | observed |
| flows_to | to_snapshot_id#0 | raw#1 | repo_semantic/historical_timeline.py:12 | observed |
| returns_value | raw#1 | return@13 | repo_semantic/historical_timeline.py:13 | observed |
| flows_to | cache#0 | history#1 | repo_semantic/historical_timeline.py:22 | observed |
| flows_to | source_key#0 | history#1 | repo_semantic/historical_timeline.py:22 | observed |
| flows_to | analyzer_version#0 | history#1 | repo_semantic/historical_timeline.py:22 | observed |
| flows_to | limit#0 | history#1 | repo_semantic/historical_timeline.py:22 | observed |
| guards | history#1 | branch | repo_semantic/historical_timeline.py:23 | observed |
| guards | history#1 | branch | repo_semantic/historical_timeline.py:27 | observed |
| flows_to | history#1 | history#2 | repo_semantic/historical_timeline.py:29 | observed |
| phi_input | history#2 | history#3 | repo_semantic/historical_timeline.py:23 | strongly_inferred |
| phi_input | history#1 | history#3 | repo_semantic/historical_timeline.py:23 | strongly_inferred |
| flows_to | history#3 | snapshots#1 | repo_semantic/historical_timeline.py:40 | observed |
| guards | history#3 | for_loop | repo_semantic/historical_timeline.py:43 | observed |
| flows_to | history#3 | previous#1 | repo_semantic/historical_timeline.py:43 | observed |
| flows_to | history#3 | current#1 | repo_semantic/historical_timeline.py:43 | observed |
| flows_to | previous#1 | changes#1 | repo_semantic/historical_timeline.py:44 | observed |
| flows_to | current#1 | changes#1 | repo_semantic/historical_timeline.py:44 | observed |
| flows_to | previous#1 | semantic_diff#1 | repo_semantic/historical_timeline.py:45 | observed |
| flows_to | current#1 | semantic_diff#1 | repo_semantic/historical_timeline.py:45 | observed |
| flows_to | changes#1 | semantic_diff#1 | repo_semantic/historical_timeline.py:45 | observed |
| flows_to | transitions#1 | expr@46 | repo_semantic/historical_timeline.py:46 | observed |
| flows_to | previous#1 | expr@46 | repo_semantic/historical_timeline.py:48 | observed |
| flows_to | current#1 | expr@46 | repo_semantic/historical_timeline.py:48 | observed |
| flows_to | previous#1 | expr@46 | repo_semantic/historical_timeline.py:49 | observed |
| flows_to | current#1 | expr@46 | repo_semantic/historical_timeline.py:50 | observed |
| flows_to | previous#1 | expr@46 | repo_semantic/historical_timeline.py:51 | observed |
| flows_to | current#1 | expr@46 | repo_semantic/historical_timeline.py:52 | observed |
| flows_to | previous#1 | expr@46 | repo_semantic/historical_timeline.py:53 | observed |
| flows_to | current#1 | expr@46 | repo_semantic/historical_timeline.py:54 | observed |
| flows_to | semantic_diff#1 | expr@46 | repo_semantic/historical_timeline.py:55 | observed |
| phi_input | changes#1 | changes#2 | repo_semantic/historical_timeline.py:43 | strongly_inferred |
| phi_input | changes:undefined | changes#2 | repo_semantic/historical_timeline.py:43 | unresolved |
| phi_input | current#1 | current#2 | repo_semantic/historical_timeline.py:43 | strongly_inferred |
| phi_input | current:undefined | current#2 | repo_semantic/historical_timeline.py:43 | unresolved |
| phi_input | previous#1 | previous#2 | repo_semantic/historical_timeline.py:43 | strongly_inferred |
| phi_input | previous:undefined | previous#2 | repo_semantic/historical_timeline.py:43 | unresolved |
| phi_input | semantic_diff#1 | semantic_diff#2 | repo_semantic/historical_timeline.py:43 | strongly_inferred |
| phi_input | semantic_diff:undefined | semantic_diff#2 | repo_semantic/historical_timeline.py:43 | unresolved |
| guards | snapshots#1 | branch | repo_semantic/historical_timeline.py:61 | observed |
| flows_to | warnings#1 | expr@62 | repo_semantic/historical_timeline.py:62 | observed |
| returns_value | source_key#0 | return@63 | repo_semantic/historical_timeline.py:64 | observed |
| returns_value | analyzer_version#0 | return@63 | repo_semantic/historical_timeline.py:65 | observed |
| returns_value | snapshots#1 | return@63 | repo_semantic/historical_timeline.py:66 | observed |
| returns_value | transitions#1 | return@63 | repo_semantic/historical_timeline.py:67 | observed |
| returns_value | warnings#1 | return@63 | repo_semantic/historical_timeline.py:69 | observed |
| flows_to | previous#0 | previous_paths#1 | repo_semantic/incremental.py:7 | observed |
| flows_to | current#0 | current_paths#1 | repo_semantic/incremental.py:8 | observed |
| flows_to | current_paths#1 | added#1 | repo_semantic/incremental.py:9 | observed |
| flows_to | previous_paths#1 | added#1 | repo_semantic/incremental.py:9 | observed |
| flows_to | previous_paths#1 | deleted#1 | repo_semantic/incremental.py:10 | observed |
| flows_to | current_paths#1 | deleted#1 | repo_semantic/incremental.py:10 | observed |
| flows_to | previous_paths#1 | shared#1 | repo_semantic/incremental.py:11 | observed |
| flows_to | current_paths#1 | shared#1 | repo_semantic/incremental.py:11 | observed |
| flows_to | shared#1 | modified#1 | repo_semantic/incremental.py:12 | observed |
| flows_to | previous#0 | modified#1 | repo_semantic/incremental.py:12 | observed |
| flows_to | current#0 | modified#1 | repo_semantic/incremental.py:12 | observed |
| flows_to | shared#1 | unchanged#1 | repo_semantic/incremental.py:13 | observed |
| flows_to | previous#0 | unchanged#1 | repo_semantic/incremental.py:13 | observed |
| flows_to | current#0 | unchanged#1 | repo_semantic/incremental.py:13 | observed |
| returns_value | added#1 | return@14 | repo_semantic/incremental.py:14 | observed |
| returns_value | modified#1 | return@14 | repo_semantic/incremental.py:14 | observed |
| returns_value | deleted#1 | return@14 | repo_semantic/incremental.py:14 | observed |
| returns_value | unchanged#1 | return@14 | repo_semantic/incremental.py:14 | observed |
| returns_value | bucket#0 | return@20 | repo_semantic/incremental.py:20 | observed |
| flows_to | path#0 | size#1 | repo_semantic/limits.py:34 | observed |
| returns_value | exc#1 | return@36 | repo_semantic/limits.py:36 | observed |
| flows_to | rel#0 | lower#1 | repo_semantic/limits.py:37 | observed |
| guards | lower#1 | branch | repo_semantic/limits.py:38 | observed |
| guards | lower#1 | branch | repo_semantic/limits.py:40 | observed |
| guards | size#1 | branch | repo_semantic/limits.py:42 | observed |
| returns_value | size#1 | return@43 | repo_semantic/limits.py:43 | observed |
| guards | lower#1 | branch | repo_semantic/limits.py:44 | observed |
| guards | size#1 | branch | repo_semantic/limits.py:44 | observed |
| guards | path#0 | with_scope | repo_semantic/limits.py:46 | observed |
| flows_to | path#0 | fh#1 | repo_semantic/limits.py:46 | observed |
| flows_to | fh#1 | longest#1 | repo_semantic/limits.py:47 | observed |
| guards | longest#1 | branch | repo_semantic/limits.py:50 | observed |
| returns_value | longest#1 | return@51 | repo_semantic/limits.py:51 | observed |
| phi_input | fh#1 | fh#2 | repo_semantic/limits.py:44 | strongly_inferred |
| phi_input | fh:undefined | fh#2 | repo_semantic/limits.py:44 | unresolved |
| phi_input | longest#1 | longest#2 | repo_semantic/limits.py:44 | strongly_inferred |
| phi_input | longest:undefined | longest#2 | repo_semantic/limits.py:44 | unresolved |
| flows_to | relations#0 | produced#1 | repo_semantic/limits.py:68 | observed |
| flows_to | start#0 | produced#1 | repo_semantic/limits.py:68 | observed |
| guards | produced#1 | branch | repo_semantic/limits.py:69 | observed |
| guards | self#0 | branch | repo_semantic/limits.py:69 | observed |
| flows_to | self#0 | expr@71 | repo_semantic/limits.py:71 | observed |
| flows_to | source_path#0 | expr@71 | repo_semantic/limits.py:71 | observed |
| flows_to | produced#1 | expr@71 | repo_semantic/limits.py:71 | observed |
| guards | relations#0 | branch | repo_semantic/limits.py:72 | observed |
| guards | self#0 | branch | repo_semantic/limits.py:72 | observed |
| guards | self#0 | branch | repo_semantic/limits.py:74 | observed |
| flows_to | self#0 | expr@76 | repo_semantic/limits.py:76 | observed |
| flows_to | source_path#0 | expr@76 | repo_semantic/limits.py:76 | observed |
| flows_to | item#0 | symbol#1 | repo_semantic/semantic_diff.py:13 | observed |
| returns_value | item#0 | return@14 | repo_semantic/semantic_diff.py:14 | observed |
| returns_value | symbol#1 | return@14 | repo_semantic/semantic_diff.py:14 | observed |
| returns_value | item#0 | return@18 | repo_semantic/semantic_diff.py:18 | observed |
| returns_value | items#0 | return@22 | repo_semantic/semantic_diff.py:22 | observed |
| guards | edges#0 | for_loop | repo_semantic/semantic_diff.py:27 | observed |
| flows_to | edges#0 | edge#1 | repo_semantic/semantic_diff.py:27 | observed |
| aliases_at_definition | edges#0 | edge#1 | repo_semantic/semantic_diff.py:27 | observed |
| guards | edge#1 | branch | repo_semantic/semantic_diff.py:28 | observed |
| guards | edge#1 | branch | repo_semantic/semantic_diff.py:30 | observed |
| flows_to | targets#1 | expr@31 | repo_semantic/semantic_diff.py:31 | observed |
| flows_to | edge#1 | expr@31 | repo_semantic/semantic_diff.py:31 | observed |
| flows_to | targets#1 | expr@33 | repo_semantic/semantic_diff.py:33 | observed |
| flows_to | edge#1 | expr@33 | repo_semantic/semantic_diff.py:33 | observed |
| guards | edge#1 | branch | repo_semantic/semantic_diff.py:34 | observed |
| guards | edge#1 | branch | repo_semantic/semantic_diff.py:35 | observed |
| flows_to | targets#1 | expr@36 | repo_semantic/semantic_diff.py:36 | observed |
| flows_to | edge#1 | expr@36 | repo_semantic/semantic_diff.py:36 | observed |
| flows_to | targets#1 | expr@38 | repo_semantic/semantic_diff.py:38 | observed |
| flows_to | edge#1 | expr@38 | repo_semantic/semantic_diff.py:38 | observed |
| phi_input | edge#1 | edge#2 | repo_semantic/semantic_diff.py:27 | strongly_inferred |
| phi_input | edge:undefined | edge#2 | repo_semantic/semantic_diff.py:27 | unresolved |
| returns_value | targets#1 | return@39 | repo_semantic/semantic_diff.py:39 | observed |
| flows_to | changes#0 | changed_paths#1 | repo_semantic/semantic_diff.py:44 | observed |
| guards | changed_paths#1 | branch | repo_semantic/semantic_diff.py:45 | observed |
| flows_to | invalid#1 | expr@46 | repo_semantic/semantic_diff.py:46 | observed |
| guards | changed_paths#1 | branch | repo_semantic/semantic_diff.py:47 | observed |
| flows_to | invalid#1 | expr@48 | repo_semantic/semantic_diff.py:48 | observed |
| returns_value | invalid#1 | return@49 | repo_semantic/semantic_diff.py:49 | observed |
| flows_to | current#0 | to_revision#1 | repo_semantic/semantic_diff.py:57 | observed |
| guards | previous#0 | branch | repo_semantic/semantic_diff.py:58 | observed |
| returns_value | to_revision#1 | return@59 | repo_semantic/semantic_diff.py:62 | observed |
| returns_value | file_changes#0 | return@59 | repo_semantic/semantic_diff.py:63 | observed |
| flows_to | file_changes#0 | changes#1 | repo_semantic/semantic_diff.py:67 | observed |
| flows_to | previous#0 | previous_symbols#1 | repo_semantic/semantic_diff.py:68 | observed |
| flows_to | current#0 | current_symbols#1 | repo_semantic/semantic_diff.py:69 | observed |
| flows_to | previous#0 | previous_relations#1 | repo_semantic/semantic_diff.py:70 | observed |
| flows_to | current#0 | current_relations#1 | repo_semantic/semantic_diff.py:71 | observed |
| flows_to | previous#0 | previous_entries#1 | repo_semantic/semantic_diff.py:72 | observed |
| flows_to | current#0 | current_entries#1 | repo_semantic/semantic_diff.py:73 | observed |
| flows_to | previous#0 | previous_rel_by_id#1 | repo_semantic/semantic_diff.py:75 | observed |
| flows_to | current#0 | current_rel_by_id#1 | repo_semantic/semantic_diff.py:76 | observed |
| flows_to | current_relations#1 | added_relation_ids#1 | repo_semantic/semantic_diff.py:77 | observed |
| flows_to | previous_relations#1 | added_relation_ids#1 | repo_semantic/semantic_diff.py:77 | observed |
| flows_to | previous_relations#1 | removed_relation_ids#1 | repo_semantic/semantic_diff.py:78 | observed |
| flows_to | current_relations#1 | removed_relation_ids#1 | repo_semantic/semantic_diff.py:78 | observed |
| flows_to | added_relation_ids#1 | changed_relation_edges#1 | repo_semantic/semantic_diff.py:79 | observed |
| flows_to | current_rel_by_id#1 | changed_relation_edges#1 | repo_semantic/semantic_diff.py:79 | observed |
| flows_to | changed_relation_edges#1 | expr@80 | repo_semantic/semantic_diff.py:80 | observed |
| flows_to | removed_relation_ids#1 | expr@80 | repo_semantic/semantic_diff.py:80 | observed |
| flows_to | previous_rel_by_id#1 | expr@80 | repo_semantic/semantic_diff.py:80 | observed |
| flows_to | previous#0 | block_paths#1 | repo_semantic/semantic_diff.py:82 | observed |
| flows_to | current#0 | block_paths#1 | repo_semantic/semantic_diff.py:82 | observed |
| flows_to | changes#1 | changed_block_files#1 | repo_semantic/semantic_diff.py:83 | observed |
| flows_to | block_paths#1 | changed_block_files#1 | repo_semantic/semantic_diff.py:83 | observed |
| flows_to | changed_relation_edges#1 | impact_targets#1 | repo_semantic/semantic_diff.py:85 | observed |
| flows_to | changed_block_files#1 | changed_path_set#1 | repo_semantic/semantic_diff.py:86 | observed |
| guards | previous#0 | for_loop | repo_semantic/semantic_diff.py:87 | observed |
| guards | current#0 | for_loop | repo_semantic/semantic_diff.py:87 | observed |
| flows_to | previous#0 | block#1 | repo_semantic/semantic_diff.py:87 | observed |
| flows_to | current#0 | block#1 | repo_semantic/semantic_diff.py:87 | observed |
| guards | block#1 | branch | repo_semantic/semantic_diff.py:88 | observed |
| guards | changed_path_set#1 | branch | repo_semantic/semantic_diff.py:88 | observed |
| flows_to | impact_targets#1 | expr@90 | repo_semantic/semantic_diff.py:90 | observed |
| flows_to | block#1 | expr@90 | repo_semantic/semantic_diff.py:90 | observed |
| guards | block#1 | branch | repo_semantic/semantic_diff.py:91 | observed |
| flows_to | impact_targets#1 | expr@92 | repo_semantic/semantic_diff.py:92 | observed |
| flows_to | block#1 | expr@92 | repo_semantic/semantic_diff.py:92 | observed |
| phi_input | block#1 | block#2 | repo_semantic/semantic_diff.py:87 | strongly_inferred |
| phi_input | block:undefined | block#2 | repo_semantic/semantic_diff.py:87 | unresolved |
| returns_value | previous#0 | return@94 | repo_semantic/semantic_diff.py:96 | observed |
| returns_value | to_revision#1 | return@94 | repo_semantic/semantic_diff.py:97 | observed |
| returns_value | changes#1 | return@94 | repo_semantic/semantic_diff.py:98 | observed |
| returns_value | current_symbols#1 | return@94 | repo_semantic/semantic_diff.py:99 | observed |
| returns_value | previous_symbols#1 | return@94 | repo_semantic/semantic_diff.py:99 | observed |
| returns_value | previous_symbols#1 | return@94 | repo_semantic/semantic_diff.py:100 | observed |
| returns_value | current_symbols#1 | return@94 | repo_semantic/semantic_diff.py:100 | observed |
| returns_value | added_relation_ids#1 | return@94 | repo_semantic/semantic_diff.py:101 | observed |
| returns_value | removed_relation_ids#1 | return@94 | repo_semantic/semantic_diff.py:102 | observed |
| returns_value | current_entries#1 | return@94 | repo_semantic/semantic_diff.py:103 | observed |
| returns_value | previous_entries#1 | return@94 | repo_semantic/semantic_diff.py:103 | observed |
| returns_value | previous_entries#1 | return@94 | repo_semantic/semantic_diff.py:104 | observed |
| returns_value | current_entries#1 | return@94 | repo_semantic/semantic_diff.py:104 | observed |
| returns_value | changed_block_files#1 | return@94 | repo_semantic/semantic_diff.py:105 | observed |
| returns_value | changes#1 | return@94 | repo_semantic/semantic_diff.py:106 | observed |
| returns_value | impact_targets#1 | return@94 | repo_semantic/semantic_diff.py:107 | observed |
State regions
Mutable state is restricted to self/cls fields, explicit globals, and conservative container regions. Read-only module constants/type aliases are kept separately as bindings.
| Access | Function | Region | Kind | Evidence |
|---|---|---|---|---|
| reads_state | _seed_groups | param:adjacency[] | parameter_container | repo_semantic/execution_paths.py:65 |
| reads_state | _seed_groups | param:adjacency[] | parameter_container | repo_semantic/execution_paths.py:69 |
| reads_state | _bounded_excerpt | param:value[] | parameter_container | repo_semantic/grounding.py:23 |
| reads_state | diff_file_fingerprints | param:previous[] | parameter_container | repo_semantic/incremental.py:12 |
| reads_state | diff_file_fingerprints | param:current[] | parameter_container | repo_semantic/incremental.py:12 |
| reads_state | diff_file_fingerprints | param:previous[] | parameter_container | repo_semantic/incremental.py:13 |
| reads_state | diff_file_fingerprints | param:current[] | parameter_container | repo_semantic/incremental.py:13 |
| writes_state | RelationBudget.__init__ | repo_semantic.limits:RelationBudget:self.per_file | object_field | repo_semantic/limits.py:62 |
| writes_state | RelationBudget.__init__ | repo_semantic.limits:RelationBudget:self.total | object_field | repo_semantic/limits.py:62 |
| writes_state | RelationBudget.__init__ | repo_semantic.limits:RelationBudget:self.truncated | object_field | repo_semantic/limits.py:63 |
| writes_state | RelationBudget.__init__ | repo_semantic.limits:RelationBudget:self.exhausted | object_field | repo_semantic/limits.py:64 |
| reads_state | RelationBudget.trim | repo_semantic.limits:RelationBudget:self.per_file | object_field | repo_semantic/limits.py:69 |
| writes_state | RelationBudget.trim | param:relations[] | parameter_container | repo_semantic/limits.py:70 |
| reads_state | RelationBudget.trim | repo_semantic.limits:RelationBudget:self.per_file | object_field | repo_semantic/limits.py:70 |
| reads_state | RelationBudget.trim | repo_semantic.limits:RelationBudget:self.truncated | object_field | repo_semantic/limits.py:71 |
| reads_state | RelationBudget.trim | repo_semantic.limits:RelationBudget:self.per_file | object_field | repo_semantic/limits.py:71 |
| reads_state | RelationBudget.trim | repo_semantic.limits:RelationBudget:self.total | object_field | repo_semantic/limits.py:72 |
| writes_state | RelationBudget.trim | param:relations[] | parameter_container | repo_semantic/limits.py:73 |
| reads_state | RelationBudget.trim | repo_semantic.limits:RelationBudget:self.total | object_field | repo_semantic/limits.py:73 |
| reads_state | RelationBudget.trim | repo_semantic.limits:RelationBudget:self.exhausted | object_field | repo_semantic/limits.py:74 |
| writes_state | RelationBudget.trim | repo_semantic.limits:RelationBudget:self.exhausted | object_field | repo_semantic/limits.py:75 |
| reads_state | RelationBudget.trim | repo_semantic.limits:RelationBudget:self.truncated | object_field | repo_semantic/limits.py:76 |
| reads_state | RelationBudget.trim | repo_semantic.limits:RelationBudget:self.total | object_field | repo_semantic/limits.py:76 |
Module binding reads
| Function | Binding | Evidence |
|---|---|---|
| build_execution_paths | repo_semantic.execution_paths:binding:State | repo_semantic/execution_paths.py:103 |
| build_provider_request | repo_semantic.grounding:binding:DEFAULT_SECTIONS | repo_semantic/grounding.py:136 |
| skip_reason | repo_semantic.limits:binding:_VENDORED_MARKERS | repo_semantic/limits.py:38 |
| skip_reason | repo_semantic.limits:binding:MAX_SOURCE_FILE_BYTES | repo_semantic/limits.py:42 |
| skip_reason | repo_semantic.limits:binding:MAX_SOURCE_FILE_BYTES | repo_semantic/limits.py:43 |
| skip_reason | repo_semantic.limits:binding:MINIFIED_MIN_BYTES | repo_semantic/limits.py:44 |
| skip_reason | repo_semantic.limits:binding:MINIFIED_MAX_LINE_CHARS | repo_semantic/limits.py:50 |
| _lesson_invalidations | repo_semantic.semantic_diff:binding:CODE_SUFFIXES | repo_semantic/semantic_diff.py:45 |
| _lesson_invalidations | repo_semantic.semantic_diff:binding:README_NAMES | repo_semantic/semantic_diff.py:47 |
| _lesson_invalidations | repo_semantic.semantic_diff:binding:MANIFEST_NAMES | repo_semantic/semantic_diff.py:47 |
Explicit exception flow
| Relation | Source | Target | Evidence | Status |
|---|---|---|---|---|
| raises | build_execution_paths | raise ValueError | repo_semantic/execution_paths.py:99 | observed |
| exception_flow | raise ValueError | uncaught:ValueError | repo_semantic/execution_paths.py:99 | unresolved |
| raises | build_execution_paths | raise ValueError | repo_semantic/execution_paths.py:101 | observed |
| exception_flow | raise ValueError | uncaught:ValueError | repo_semantic/execution_paths.py:101 | unresolved |
| raises | _injected_bare_except | raise RuntimeError | repo_semantic/incremental.py:25 | observed |
| caught_by | raise RuntimeError | except * | repo_semantic/incremental.py:25 | strongly_inferred |
Findings
| Severity | Class | Type | Location | Symbol | Evidence statement |
|---|---|---|---|---|---|
| high | defect | mutable_default | repo_semantic/incremental.py:19 | _injected_mutable_default | Mutable default argument can retain state across calls. |
| high | defect | unreachable_statement | repo_semantic/incremental.py:21 | _injected_mutable_default | Statement follows an unconditional terminator in the same lexical block. |
| medium | defect | bare_except | repo_semantic/incremental.py:26 | _injected_bare_except | Bare except catches every exception type. |
| medium | defect | module_import_cycle | : | Loaded modules form a static import cycle. | |
| info | hotspot | boundary_heavy | repo_semantic/architecture_reconstruction.py: | _uncertainties | Many calls cross the resolved graph boundary. |
| info | hotspot | boundary_heavy | repo_semantic/execution_paths.py: | build_execution_paths | Many calls cross the resolved graph boundary. |
| info | hotspot | boundary_heavy | repo_semantic/grounding.py: | build_grounding_catalog | Many calls cross the resolved graph boundary. |
| info | hotspot | boundary_heavy | repo_semantic/historical_timeline.py: | build_historical_timeline | Many calls cross the resolved graph boundary. |
| info | hotspot | boundary_heavy | repo_semantic/limits.py: | skip_reason | Many calls cross the resolved graph boundary. |
| info | hotspot | boundary_heavy | repo_semantic/semantic_diff.py: | _lesson_invalidations | Many calls cross the resolved graph boundary. |
| info | hotspot | boundary_heavy | repo_semantic/semantic_diff.py: | build_semantic_diff | Many calls cross the resolved graph boundary. |
| info | hotspot | high_call_fanout | repo_semantic/architecture_reconstruction.py: | _flow_description | High static call fan-out; review as an orchestration/hotspot node. |
| info | hotspot | high_call_fanout | repo_semantic/architecture_reconstruction.py: | _uncertainties | High static call fan-out; review as an orchestration/hotspot node. |
| info | hotspot | high_call_fanout | repo_semantic/architecture_reconstruction.py: | reconstruct_architecture | High static call fan-out; review as an orchestration/hotspot node. |
| info | hotspot | high_call_fanout | repo_semantic/execution_paths.py: | build_execution_paths | High static call fan-out; review as an orchestration/hotspot node. |
| info | hotspot | high_call_fanout | repo_semantic/grounding.py: | build_grounding_catalog | High static call fan-out; review as an orchestration/hotspot node. |
| info | hotspot | high_call_fanout | repo_semantic/historical_timeline.py: | build_historical_timeline | High static call fan-out; review as an orchestration/hotspot node. |
| info | hotspot | high_call_fanout | repo_semantic/limits.py: | skip_reason | High static call fan-out; review as an orchestration/hotspot node. |
| info | hotspot | high_call_fanout | repo_semantic/semantic_diff.py: | _lesson_invalidations | High static call fan-out; review as an orchestration/hotspot node. |
| info | hotspot | high_call_fanout | repo_semantic/semantic_diff.py: | build_semantic_diff | High static call fan-out; review as an orchestration/hotspot node. |
Deterministic motif candidates
| Kind | Path | Symbol | Confidence | Structural rule |
|---|---|---|---|---|
| boundary_orchestration | repo_semantic/architecture_reconstruction.py | _flow_description | 0.72 | five or more unresolved/external calls |
| boundary_orchestration | repo_semantic/architecture_reconstruction.py | _module_roles | 0.72 | five or more unresolved/external calls |
| boundary_orchestration | repo_semantic/architecture_reconstruction.py | _uncertainties | 0.72 | five or more unresolved/external calls |
| boundary_orchestration | repo_semantic/architecture_reconstruction.py | reconstruct_architecture | 0.72 | five or more unresolved/external calls |
| boundary_orchestration | repo_semantic/execution_paths.py | build_execution_paths | 0.72 | five or more unresolved/external calls |
| boundary_orchestration | repo_semantic/grounding.py | build_grounding_catalog | 0.72 | five or more unresolved/external calls |
| boundary_orchestration | repo_semantic/historical_timeline.py | build_historical_timeline | 0.72 | five or more unresolved/external calls |
| boundary_orchestration | repo_semantic/incremental.py | diff_file_fingerprints | 0.72 | five or more unresolved/external calls |
| boundary_orchestration | repo_semantic/limits.py | skip_reason | 0.72 | five or more unresolved/external calls |
| boundary_orchestration | repo_semantic/semantic_diff.py | _lesson_invalidations | 0.72 | five or more unresolved/external calls |
| boundary_orchestration | repo_semantic/semantic_diff.py | _relation_targets | 0.72 | five or more unresolved/external calls |
| boundary_orchestration | repo_semantic/semantic_diff.py | build_semantic_diff | 0.72 | five or more unresolved/external calls |
| orchestration_fanout | repo_semantic/execution_paths.py | build_execution_paths | 0.85 | five or more resolved local calls |
| orchestration_fanout | repo_semantic/semantic_diff.py | build_semantic_diff | 0.85 | five or more resolved local calls |
| read_modify_write | repo_semantic/limits.py | RelationBudget.trim | 0.86 | same function reads and writes the same state target |
| resource_scope | repo_semantic/limits.py | skip_reason | 0.92 | with/async-with establishes bounded resource scope |
Name-independent structural signature clusters
| Motif ID | Members | Identity basis |
|---|---|---|
| motif_coarse_1d063c7b37b2 | 3 | name-independent coarse structural feature signature |
| motif_coarse_6498af11de89 | 2 | name-independent coarse structural feature signature |
| motif_coarse_b2feb91af8fa | 2 | name-independent coarse structural feature signature |
| motif_coarse_b4a27ad8a6cb | 2 | name-independent coarse structural feature signature |
| motif_coarse_e3a6d82c57d0 | 2 | name-independent coarse structural feature signature |
| motif_coarse_f373ee2a1d21 | 2 | name-independent coarse structural feature signature |
| motif_coarse_fca123bd72d6 | 6 | name-independent coarse structural feature signature |
Per-file SHA-256
| Path | Bytes | SHA-256 |
|---|---|---|
| repo_semantic/architecture_reconstruction.py | 5145 | 2c70301670ace276… |
| repo_semantic/execution_paths.py | 5894 | 608725e724891c0b… |
| repo_semantic/grounding.py | 7189 | 981aae9fc01d4273… |
| repo_semantic/historical_timeline.py | 2729 | 2693e3fd967ac481… |
| repo_semantic/incremental.py | 1001 | 6f24db1f386eb427… |
| repo_semantic/limits.py | 4039 | 36c30278003ea489… |
| repo_semantic/semantic_diff.py | 4890 | dafdcb13775c6797… |
Epistemic contract
observed
- Python AST definitions
- imports
- call syntax
- control syntax
- source spans
- local file hashes
- SSA-like local definitions/uses
- self/cls/explicit-global state accesses
- module-binding reads
- explicit raise/except syntax
- definition-time Python name aliases
strongly_inferred
- local call target resolution
- parameter-container state regions
- effect hints
- branch/loop phi merges
- explicit exception catch matching
- structural motif candidates
unresolved
- runtime dispatch
- reflection
- native extension behavior
- external library semantics
- precise heap points-to beyond definition-time alias
- dynamic exception behavior from calls
- concurrency semantics