9
Semantic events
1
Dependencies Δ
2
Calls Δ
0
State writers Δ
0
Effects Δ
0
Motifs Δ
4
Findings Δ
2
Exceptions Δ
0
Impact targets Δ
Semantic events
| Severity | Kind | Change | Basis |
|---|---|---|---|
| high | finding_added | Finding added: unreachable_statement at repo_semantic/incremental.py::_injected_mutable_default | detector diff |
| high | finding_added | Finding added: mutable_default at repo_semantic/incremental.py::_injected_mutable_default | detector diff |
| medium | finding_added | Finding added: module_import_cycle at :: | detector diff |
| medium | finding_added | Finding added: bare_except at repo_semantic/incremental.py::_injected_bare_except | detector diff |
| medium | exception_structure_added | Exception structure added: raises RuntimeError | normalized exception structure |
| medium | exception_structure_added | Exception structure added: handler ['*'] | normalized exception structure |
| medium | dependency_added | Dependency added: repo_semantic/incremental.py → repo_semantic/historical_timeline.py | normalized imports relation |
| low | call_added | Call added: _injected_mutable_default → bucket.append | normalized call relation |
| low | call_added | Call added: _injected_bare_except → RuntimeError | normalized call relation |
Impact breadth changes
Impact Δ is bounded review-scope change, not defect truth.
| Target | Δ breadth | Before | After | Vector Δ |
|---|---|---|---|---|
| No impact breadth change in evaluated targets. | ||||
File content identity
Hash changes are content evidence and are intentionally separate from semantic changes.
| File | Base SHA | Target SHA | Bytes Δ |
|---|---|---|---|
| repo_semantic/incremental.py | 94c006ad1e6bb1 | 6f24db1f386eb4 | +357 |
Possible rename / move candidates
Only unique exact normalized function-shape matches are shown; these remain inferred candidates.
| From | To | Confidence | Basis |
|---|---|---|---|
| No conservative rename/move candidate. | |||
{
"version": "semantic-diff-0.4",
"definition": "Semantic diff compares normalized program identities and relations rather than source line positions. File hashes are reported separately as content change evidence.",
"base": {
"root": "/mnt/data/cisg_repolumen_poc/repolumen_slice",
"analyzer_version": "0.4.0",
"metrics": {
"loaded_files": 7,
"nodes": 526,
"edges": 1125,
"node_types": {
"file": 7,
"function": 25,
"class": 1,
"method": 2,
"boundary_module": 7,
"data_value": 167,
"data_sink": 40,
"control": 72,
"data_use": 34,
"data_phi": 49,
"data_undefined": 35,
"boundary_call": 63,
"state_region": 9,
"module_binding": 9,
"exception_event": 2,
"boundary_exception": 1,
"exception_handler": 2,
"effect": 1
},
"edge_types": {
"contains": 28,
"imports": 26,
"defines": 216,
"contains_data": 74,
"returns_value": 96,
"controls": 72,
"flows_to": 198,
"guards": 78,
"phi_input": 98,
"calls": 194,
"aliases_at_definition": 5,
"reads_state": 16,
"reads_binding": 10,
"raises": 2,
"exception_flow": 2,
"contains_exception_handler": 2,
"effect": 1,
"writes_state": 7
},
"resolved_local_calls": 34,
"boundary_calls": 160,
"findings_by_category": {
"hotspot": 16
},
"findings_by_severity": {
"info": 16
},
"motif_instances": 16,
"motif_clusters": 6,
"data_values": 167,
"phi_nodes": 49,
"data_edges": 691,
"alias_edges": 5,
"state_regions": 9,
"state_reads": 16,
"state_writes": 7,
"module_binding_reads": 10,
"exception_handlers": 2,
"explicit_raises": 2,
"unresolved_local_uses": 0,
"warnings": 0
}
},
"target": {
"root": "/mnt/data/cisg_repolumen_poc/mutation_slice",
"analyzer_version": "0.4.0",
"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
}
},
"summary": {
"files_added": 0,
"files_removed": 0,
"files_modified": 1,
"entities_added": 2,
"entities_removed": 0,
"dependencies_added": 1,
"dependencies_removed": 0,
"calls_added": 2,
"calls_removed": 0,
"state_readers_added": 0,
"state_readers_removed": 0,
"state_writers_added": 0,
"state_writers_removed": 0,
"effects_added": 0,
"effects_removed": 0,
"motifs_added": 0,
"motifs_removed": 0,
"findings_added": 4,
"findings_resolved": 0,
"exception_structures_added": 2,
"exception_structures_removed": 0,
"impact_targets_changed": 0,
"possible_renames_or_moves": 0,
"semantic_events": 9
},
"changes": {
"files": {
"added": [],
"removed": [],
"modified": [
{
"path": "repo_semantic/incremental.py",
"base_sha256": "94c006ad1e6bb1857d2527829b9544755eca304e01c5ef7ebbbd91680480f659",
"target_sha256": "6f24db1f386eb42763a397ff2f37b0f051242bac64dd43a4495f76147f63998a",
"base_bytes": 644,
"target_bytes": 1001
}
]
},
"entities": {
"added": [
{
"id": "fn_e5aa9374079897e1",
"type": "function",
"label": "_injected_bare_except",
"symbol": "_injected_bare_except",
"path": "repo_semantic/incremental.py",
"module": "repo_semantic.incremental",
"status": "observed",
"confidence": 1.0,
"motif_signature": "motif_exact_22178f0240c4"
},
{
"id": "fn_6a8d8e6630758cc3",
"type": "function",
"label": "_injected_mutable_default",
"symbol": "_injected_mutable_default",
"path": "repo_semantic/incremental.py",
"module": "repo_semantic.incremental",
"status": "observed",
"confidence": 1.0,
"motif_signature": "motif_exact_44528bd13829"
}
],
"removed": []
},
"relations": {
"calls": {
"added": [
{
"type": "calls",
"source": {
"id": "fn_e5aa9374079897e1",
"type": "function",
"label": "_injected_bare_except",
"symbol": "_injected_bare_except",
"path": "repo_semantic/incremental.py",
"module": "repo_semantic.incremental",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "boundary_67cab1d4456600e4",
"type": "boundary_call",
"label": "RuntimeError",
"status": "unresolved",
"confidence": 0.4
},
"resolution": "boundary",
"status": "unresolved",
"confidence": 0.4,
"callee": "RuntimeError",
"evidence": {
"path": "repo_semantic/incremental.py",
"line": 25,
"end_line": 25,
"source_hash": "6f24db1f386eb42763a397ff2f37b0f051242bac64dd43a4495f76147f63998a",
"source_kind": "code"
}
},
{
"type": "calls",
"source": {
"id": "fn_6a8d8e6630758cc3",
"type": "function",
"label": "_injected_mutable_default",
"symbol": "_injected_mutable_default",
"path": "repo_semantic/incremental.py",
"module": "repo_semantic.incremental",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "boundary_3cc2220fa75698c9",
"type": "boundary_call",
"label": "bucket.append",
"status": "unresolved",
"confidence": 0.4
},
"resolution": "boundary",
"status": "unresolved",
"confidence": 0.4,
"callee": "bucket.append",
"evidence": {
"path": "repo_semantic/incremental.py",
"line": 21,
"end_line": 21,
"source_hash": "6f24db1f386eb42763a397ff2f37b0f051242bac64dd43a4495f76147f63998a",
"source_kind": "code"
}
}
],
"removed": []
},
"effect": {
"added": [],
"removed": []
},
"imports": {
"added": [
{
"type": "imports",
"source": {
"id": "file_ac3545fcb0dfb1f4",
"type": "file",
"label": "repo_semantic/incremental.py",
"path": "repo_semantic/incremental.py",
"module": "repo_semantic.incremental",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "file_fd85751ba7b0653c",
"type": "file",
"label": "repo_semantic/historical_timeline.py",
"path": "repo_semantic/historical_timeline.py",
"module": "repo_semantic.historical_timeline",
"status": "observed",
"confidence": 1.0
},
"resolution": "local",
"status": "observed",
"confidence": 1.0,
"callee": null,
"evidence": {
"path": "repo_semantic/incremental.py",
"line": 17,
"end_line": 17,
"source_hash": "6f24db1f386eb42763a397ff2f37b0f051242bac64dd43a4495f76147f63998a",
"source_kind": "code"
}
}
],
"removed": []
},
"reads_state": {
"added": [],
"removed": []
},
"writes_state": {
"added": [],
"removed": []
}
},
"motifs": {
"added": [],
"removed": []
},
"findings": {
"added": [
{
"path": "repo_semantic/incremental.py",
"symbol": "_injected_bare_except",
"status": "violated",
"type": "bare_except",
"category": "defect",
"severity": "medium",
"line": 26,
"rule": "catch_all_requires_explicit_policy",
"message": "Bare except catches every exception type."
},
{
"type": "module_import_cycle",
"category": "defect",
"severity": "medium",
"nodes": [
"file_ac3545fcb0dfb1f4",
"file_fd85751ba7b0653c"
],
"rule": "import_graph_should_be_acyclic",
"message": "Loaded modules form a static import cycle.",
"status": "violated"
},
{
"type": "mutable_default",
"category": "defect",
"severity": "high",
"path": "repo_semantic/incremental.py",
"symbol": "_injected_mutable_default",
"line": 19,
"rule": "mutable_default_argument",
"message": "Mutable default argument can retain state across calls.",
"status": "violated"
},
{
"type": "unreachable_statement",
"category": "defect",
"severity": "high",
"path": "repo_semantic/incremental.py",
"symbol": "_injected_mutable_default",
"line": 21,
"rule": "no_statement_after_unconditional_terminator",
"message": "Statement follows an unconditional terminator in the same lexical block."
}
],
"resolved": []
},
"exceptions": {
"added": [
{
"type": "handler",
"owner": {
"id": "fn_e5aa9374079897e1",
"type": "function",
"label": "_injected_bare_except",
"symbol": "_injected_bare_except",
"path": "repo_semantic/incremental.py",
"module": "repo_semantic.incremental",
"status": "observed",
"confidence": 1.0
},
"catches": [
"*"
],
"evidence": {
"path": "repo_semantic/incremental.py",
"line": 26,
"end_line": 26,
"source_hash": "6f24db1f386eb42763a397ff2f37b0f051242bac64dd43a4495f76147f63998a",
"source_kind": "code"
}
},
{
"type": "raises",
"owner": {
"id": "fn_e5aa9374079897e1",
"type": "function",
"label": "_injected_bare_except",
"symbol": "_injected_bare_except",
"path": "repo_semantic/incremental.py",
"module": "repo_semantic.incremental",
"status": "observed",
"confidence": 1.0
},
"exception": "RuntimeError",
"evidence": {
"path": "repo_semantic/incremental.py",
"line": 25,
"end_line": 25,
"source_hash": "6f24db1f386eb42763a397ff2f37b0f051242bac64dd43a4495f76147f63998a",
"source_kind": "code"
}
}
],
"removed": []
},
"impact": {
"changed": [],
"meta": {
"evaluated": 27,
"candidate_count": 27,
"cap": 500,
"truncated": false,
"depth": 3
}
},
"possible_renames_or_moves": []
},
"semantic_events": [
{
"kind": "finding_added",
"severity": "high",
"message": "Finding added: unreachable_statement at repo_semantic/incremental.py::_injected_mutable_default",
"basis": "detector diff",
"payload": {
"type": "unreachable_statement",
"category": "defect",
"severity": "high",
"path": "repo_semantic/incremental.py",
"symbol": "_injected_mutable_default",
"line": 21,
"rule": "no_statement_after_unconditional_terminator",
"message": "Statement follows an unconditional terminator in the same lexical block."
}
},
{
"kind": "finding_added",
"severity": "high",
"message": "Finding added: mutable_default at repo_semantic/incremental.py::_injected_mutable_default",
"basis": "detector diff",
"payload": {
"type": "mutable_default",
"category": "defect",
"severity": "high",
"path": "repo_semantic/incremental.py",
"symbol": "_injected_mutable_default",
"line": 19,
"rule": "mutable_default_argument",
"message": "Mutable default argument can retain state across calls.",
"status": "violated"
}
},
{
"kind": "finding_added",
"severity": "medium",
"message": "Finding added: module_import_cycle at ::",
"basis": "detector diff",
"payload": {
"type": "module_import_cycle",
"category": "defect",
"severity": "medium",
"nodes": [
"file_ac3545fcb0dfb1f4",
"file_fd85751ba7b0653c"
],
"rule": "import_graph_should_be_acyclic",
"message": "Loaded modules form a static import cycle.",
"status": "violated"
}
},
{
"kind": "finding_added",
"severity": "medium",
"message": "Finding added: bare_except at repo_semantic/incremental.py::_injected_bare_except",
"basis": "detector diff",
"payload": {
"path": "repo_semantic/incremental.py",
"symbol": "_injected_bare_except",
"status": "violated",
"type": "bare_except",
"category": "defect",
"severity": "medium",
"line": 26,
"rule": "catch_all_requires_explicit_policy",
"message": "Bare except catches every exception type."
}
},
{
"kind": "exception_structure_added",
"severity": "medium",
"message": "Exception structure added: raises RuntimeError",
"basis": "normalized exception structure",
"payload": {
"type": "raises",
"owner": {
"id": "fn_e5aa9374079897e1",
"type": "function",
"label": "_injected_bare_except",
"symbol": "_injected_bare_except",
"path": "repo_semantic/incremental.py",
"module": "repo_semantic.incremental",
"status": "observed",
"confidence": 1.0
},
"exception": "RuntimeError",
"evidence": {
"path": "repo_semantic/incremental.py",
"line": 25,
"end_line": 25,
"source_hash": "6f24db1f386eb42763a397ff2f37b0f051242bac64dd43a4495f76147f63998a",
"source_kind": "code"
}
}
},
{
"kind": "exception_structure_added",
"severity": "medium",
"message": "Exception structure added: handler ['*']",
"basis": "normalized exception structure",
"payload": {
"type": "handler",
"owner": {
"id": "fn_e5aa9374079897e1",
"type": "function",
"label": "_injected_bare_except",
"symbol": "_injected_bare_except",
"path": "repo_semantic/incremental.py",
"module": "repo_semantic.incremental",
"status": "observed",
"confidence": 1.0
},
"catches": [
"*"
],
"evidence": {
"path": "repo_semantic/incremental.py",
"line": 26,
"end_line": 26,
"source_hash": "6f24db1f386eb42763a397ff2f37b0f051242bac64dd43a4495f76147f63998a",
"source_kind": "code"
}
}
},
{
"kind": "dependency_added",
"severity": "medium",
"message": "Dependency added: repo_semantic/incremental.py → repo_semantic/historical_timeline.py",
"basis": "normalized imports relation",
"payload": {
"type": "imports",
"source": {
"id": "file_ac3545fcb0dfb1f4",
"type": "file",
"label": "repo_semantic/incremental.py",
"path": "repo_semantic/incremental.py",
"module": "repo_semantic.incremental",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "file_fd85751ba7b0653c",
"type": "file",
"label": "repo_semantic/historical_timeline.py",
"path": "repo_semantic/historical_timeline.py",
"module": "repo_semantic.historical_timeline",
"status": "observed",
"confidence": 1.0
},
"resolution": "local",
"status": "observed",
"confidence": 1.0,
"callee": null,
"evidence": {
"path": "repo_semantic/incremental.py",
"line": 17,
"end_line": 17,
"source_hash": "6f24db1f386eb42763a397ff2f37b0f051242bac64dd43a4495f76147f63998a",
"source_kind": "code"
}
}
},
{
"kind": "call_added",
"severity": "low",
"message": "Call added: _injected_mutable_default → bucket.append",
"basis": "normalized call relation",
"payload": {
"type": "calls",
"source": {
"id": "fn_6a8d8e6630758cc3",
"type": "function",
"label": "_injected_mutable_default",
"symbol": "_injected_mutable_default",
"path": "repo_semantic/incremental.py",
"module": "repo_semantic.incremental",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "boundary_3cc2220fa75698c9",
"type": "boundary_call",
"label": "bucket.append",
"status": "unresolved",
"confidence": 0.4
},
"resolution": "boundary",
"status": "unresolved",
"confidence": 0.4,
"callee": "bucket.append",
"evidence": {
"path": "repo_semantic/incremental.py",
"line": 21,
"end_line": 21,
"source_hash": "6f24db1f386eb42763a397ff2f37b0f051242bac64dd43a4495f76147f63998a",
"source_kind": "code"
}
}
},
{
"kind": "call_added",
"severity": "low",
"message": "Call added: _injected_bare_except → RuntimeError",
"basis": "normalized call relation",
"payload": {
"type": "calls",
"source": {
"id": "fn_e5aa9374079897e1",
"type": "function",
"label": "_injected_bare_except",
"symbol": "_injected_bare_except",
"path": "repo_semantic/incremental.py",
"module": "repo_semantic.incremental",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "boundary_67cab1d4456600e4",
"type": "boundary_call",
"label": "RuntimeError",
"status": "unresolved",
"confidence": 0.4
},
"resolution": "boundary",
"status": "unresolved",
"confidence": 0.4,
"callee": "RuntimeError",
"evidence": {
"path": "repo_semantic/incremental.py",
"line": 25,
"end_line": 25,
"source_hash": "6f24db1f386eb42763a397ff2f37b0f051242bac64dd43a4495f76147f63998a",
"source_kind": "code"
}
}
}
],
"epistemic_boundary": {
"observed": [
"per-file content hash change",
"source-derived entity presence",
"normalized import/call/state/effect relations",
"detector findings"
],
"strongly_inferred": [
"motif membership",
"bounded Impact Engine breadth change",
"unique normalized-shape rename/move candidate"
],
"unresolved": [
"behavioral equivalence outside the analyzed static subset",
"dynamic dispatch/reflection/native effects",
"whether an added semantic relation changes user-visible behavior",
"rename/move candidates when structural signatures are ambiguous"
]
}
}Epistemic boundary
Observed: normalized source-derived entities/relations and file content hashes.
Strongly inferred: motifs, bounded impact changes, conservative rename/move candidates.
Unresolved: runtime-only behavior, reflection/native code, and whether a semantic relation change alters user-visible behavior.