14
Semantic events
1
Dependencies Δ
4
Calls Δ
1
State writers Δ
1
Effects Δ
2
Motifs Δ
1
Findings Δ
0
Exceptions Δ
3
Impact targets Δ
Semantic events
| Severity | Kind | Change | Basis |
|---|---|---|---|
| high | finding_added | Finding added: possibly_undefined_local at bad.py::broken | detector diff |
| medium | state_writer_added | State writer added: root → app:global:CACHE | writes_state relation |
| medium | motif_added | Motif added: resource_scope at app.py::root | structural motif inference |
| medium | motif_added | Motif added: read_modify_write at app.py::root | structural motif inference |
| medium | impact_breadth_changed | Review breadth changed by +7: extra.py::persist | Impact Engine depth 3 |
| medium | impact_breadth_changed | Review breadth changed by +7: app.py::root | Impact Engine depth 3 |
| medium | impact_breadth_changed | Review breadth changed by +6: helper.py::helper | Impact Engine depth 3 |
| medium | effect_added | Effect added: root → file_io | effect relation |
| medium | dependency_added | Dependency added: app.py → extra.py | normalized imports relation |
| medium | call_added | Call added: root → persist | normalized call relation |
| low | state_reader_added | State reader added: root → app:global:CACHE | reads_state relation |
| low | call_added | Call added: root → str | normalized call relation |
| low | call_added | Call added: root → open | normalized call relation |
| low | call_added | Call added: root → f.write | normalized call relation |
Impact breadth changes
Impact Δ is bounded review-scope change, not defect truth.
| Target | Δ breadth | Before | After | Vector Δ |
|---|---|---|---|---|
| extra.py::persist | +7 | 0 | 7 | {"affected_motifs": 2, "boundary_touchpoints": 3, "data_sinks": 0, "direct_callees": 0, "direct_callers": 1, "effect_touchpoints": 1, "likely_tests": 0, "local_data_values": 0, "phi_nodes": 0, "review_files": 1, "state_coupled_functions": 0, "state_regions_read": 0, "state_regions_written": 0, "transitive_downstream": 0, "transitive_upstream": 1} |
| app.py::root | +7 | 1 | 8 | {"affected_motifs": 2, "boundary_touchpoints": 3, "data_sinks": 0, "direct_callees": 1, "direct_callers": 0, "effect_touchpoints": 1, "likely_tests": 0, "local_data_values": 4, "phi_nodes": 0, "review_files": 1, "state_coupled_functions": 0, "state_regions_read": 1, "state_regions_written": 1, "transitive_downstream": 1, "transitive_upstream": 0} |
| helper.py::helper | +6 | 1 | 7 | {"affected_motifs": 2, "boundary_touchpoints": 3, "data_sinks": 0, "direct_callees": 0, "direct_callers": 0, "effect_touchpoints": 1, "likely_tests": 0, "local_data_values": 0, "phi_nodes": 0, "review_files": 0, "state_coupled_functions": 0, "state_regions_read": 0, "state_regions_written": 0, "transitive_downstream": 0, "transitive_upstream": 0} |
File content identity
Hash changes are content evidence and are intentionally separate from semantic changes.
| File | Base SHA | Target SHA | Bytes Δ |
|---|---|---|---|
| app.py | 9aeb874c18f3e6 | 2ec088553b6e6f | +152 |
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.5",
"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/PBSOI_CISG_MVP_v0.7/semantic_diff_demo/base",
"analyzer_version": "0.7.0",
"metrics": {
"loaded_files": 3,
"nodes": 12,
"edges": 14,
"node_types": {
"file": 3,
"function": 3,
"data_value": 3,
"data_sink": 3
},
"edge_types": {
"contains": 3,
"imports": 1,
"defines": 3,
"contains_data": 3,
"returns_value": 3,
"calls": 1
},
"resolved_local_calls": 1,
"boundary_calls": 0,
"findings_by_category": {},
"findings_by_severity": {},
"motif_instances": 0,
"motif_clusters": 1,
"data_values": 3,
"phi_nodes": 0,
"data_edges": 6,
"alias_edges": 0,
"state_regions": 0,
"state_reads": 0,
"state_writes": 0,
"module_binding_reads": 0,
"exception_handlers": 0,
"explicit_raises": 0,
"unresolved_local_uses": 0,
"warnings": 0
}
},
"target": {
"root": "/mnt/data/PBSOI_CISG_MVP_v0.7/semantic_diff_demo/target",
"analyzer_version": "0.7.0",
"metrics": {
"loaded_files": 4,
"nodes": 30,
"edges": 40,
"node_types": {
"file": 4,
"function": 4,
"control": 2,
"data_value": 7,
"state_region": 1,
"data_use": 2,
"data_sink": 4,
"effect": 1,
"boundary_call": 3,
"data_phi": 1,
"data_undefined": 1
},
"edge_types": {
"contains": 4,
"imports": 2,
"controls": 2,
"defines": 8,
"reads_state": 1,
"writes_state": 1,
"contains_data": 6,
"flows_to": 3,
"returns_value": 4,
"effect": 1,
"calls": 5,
"guards": 1,
"phi_input": 2
},
"resolved_local_calls": 2,
"boundary_calls": 3,
"findings_by_category": {
"defect": 1
},
"findings_by_severity": {
"high": 1
},
"motif_instances": 2,
"motif_clusters": 1,
"data_values": 7,
"phi_nodes": 1,
"data_edges": 18,
"alias_edges": 0,
"state_regions": 1,
"state_reads": 1,
"state_writes": 1,
"module_binding_reads": 0,
"exception_handlers": 0,
"explicit_raises": 0,
"unresolved_local_uses": 1,
"warnings": 0
}
},
"summary": {
"files_added": 1,
"files_removed": 0,
"files_modified": 1,
"entities_added": 2,
"entities_removed": 0,
"dependencies_added": 1,
"dependencies_removed": 0,
"calls_added": 4,
"calls_removed": 0,
"state_readers_added": 1,
"state_readers_removed": 0,
"state_writers_added": 1,
"state_writers_removed": 0,
"effects_added": 1,
"effects_removed": 0,
"motifs_added": 2,
"motifs_removed": 0,
"findings_added": 1,
"findings_resolved": 0,
"exception_structures_added": 0,
"exception_structures_removed": 0,
"impact_targets_changed": 3,
"possible_renames_or_moves": 0,
"semantic_events": 14
},
"changes": {
"files": {
"added": [
{
"path": "bad.py",
"sha256": "fa44a6a601b5f7c68da73595b30fa2a1944eeaab51e7dcbdb52828ecb0b093a2",
"bytes": 66,
"status": "verified_local_content"
}
],
"removed": [],
"modified": [
{
"path": "app.py",
"base_sha256": "9aeb874c18f3e60ca1fc718009b36e64689f02628b262d6c5bc37e2cb323b4f7",
"target_sha256": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"base_bytes": 72,
"target_bytes": 224
}
]
},
"entities": {
"added": [
{
"id": "file_5ea031f3fad82a13",
"type": "file",
"label": "bad.py",
"path": "bad.py",
"module": "bad",
"status": "observed",
"confidence": 1.0,
"motif_signature": null
},
{
"id": "fn_3ea4a988ecfabd70",
"type": "function",
"label": "broken",
"symbol": "broken",
"path": "bad.py",
"module": "bad",
"status": "observed",
"confidence": 1.0,
"motif_signature": "motif_exact_33da3ae324f9"
}
],
"removed": []
},
"relations": {
"calls": {
"added": [
{
"type": "calls",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "boundary_4300948e30f37326",
"type": "boundary_call",
"label": "f.write",
"status": "unresolved",
"confidence": 0.4
},
"resolution": "boundary",
"status": "unresolved",
"confidence": 0.4,
"callee": "f.write",
"evidence": {
"path": "app.py",
"line": 11,
"end_line": 11,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
},
{
"type": "calls",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "boundary_3dbe928d4a809b5c",
"type": "boundary_call",
"label": "open",
"status": "unresolved",
"confidence": 0.4
},
"resolution": "boundary",
"status": "unresolved",
"confidence": 0.4,
"callee": "open",
"evidence": {
"path": "app.py",
"line": 10,
"end_line": 10,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
},
{
"type": "calls",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "boundary_b99cdd07851017b7",
"type": "boundary_call",
"label": "str",
"status": "unresolved",
"confidence": 0.4
},
"resolution": "boundary",
"status": "unresolved",
"confidence": 0.4,
"callee": "str",
"evidence": {
"path": "app.py",
"line": 11,
"end_line": 11,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
},
{
"type": "calls",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "fn_381caeb25920760b",
"type": "function",
"label": "persist",
"symbol": "persist",
"path": "extra.py",
"module": "extra",
"status": "observed",
"confidence": 1.0
},
"resolution": "local",
"status": "observed",
"confidence": 0.92,
"callee": "persist",
"evidence": {
"path": "app.py",
"line": 12,
"end_line": 12,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
}
],
"removed": []
},
"effect": {
"added": [
{
"type": "effect",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "effect_531521d23c3d9812",
"type": "effect",
"label": "file_io",
"status": "strongly_inferred",
"confidence": 0.68
},
"resolution": null,
"status": "strongly_inferred",
"confidence": 0.68,
"callee": "open",
"evidence": {
"path": "app.py",
"line": 10,
"end_line": 10,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
}
],
"removed": []
},
"imports": {
"added": [
{
"type": "imports",
"source": {
"id": "file_13cce7fd076299c8",
"type": "file",
"label": "app.py",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "file_4d74821404433b49",
"type": "file",
"label": "extra.py",
"path": "extra.py",
"module": "extra",
"status": "observed",
"confidence": 1.0
},
"resolution": "local",
"status": "observed",
"confidence": 1.0,
"callee": null,
"evidence": {
"path": "app.py",
"line": 2,
"end_line": 2,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
}
],
"removed": []
},
"reads_state": {
"added": [
{
"type": "reads_state",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "state_region_84ae93567ca74dff",
"type": "state_region",
"label": "app:global:CACHE",
"region_kind": "module_global",
"status": "observed",
"confidence": 0.95
},
"resolution": null,
"status": "observed",
"confidence": 0.95,
"callee": null,
"evidence": {
"path": "app.py",
"line": 8,
"end_line": 8,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
}
],
"removed": []
},
"writes_state": {
"added": [
{
"type": "writes_state",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "state_region_84ae93567ca74dff",
"type": "state_region",
"label": "app:global:CACHE",
"region_kind": "module_global",
"status": "observed",
"confidence": 0.95
},
"resolution": null,
"status": "observed",
"confidence": 0.95,
"callee": null,
"evidence": {
"path": "app.py",
"line": 9,
"end_line": 9,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
}
],
"removed": []
}
},
"motifs": {
"added": [
{
"id": "motif_instance_bcc099d6b4330aac",
"kind": "read_modify_write",
"node_id": "fn_4e3d7579479d3d25",
"path": "app.py",
"symbol": "root",
"confidence": 0.86,
"rule": "same function reads and writes the same state target",
"identity_basis": "structural_features",
"status": "strongly_inferred"
},
{
"id": "motif_instance_31c7f624f011b5c7",
"kind": "resource_scope",
"node_id": "fn_4e3d7579479d3d25",
"path": "app.py",
"symbol": "root",
"confidence": 0.92,
"rule": "with/async-with establishes bounded resource scope",
"identity_basis": "structural_features",
"status": "strongly_inferred"
}
],
"removed": []
},
"findings": {
"added": [
{
"type": "possibly_undefined_local",
"category": "defect",
"severity": "high",
"path": "bad.py",
"symbol": "broken",
"line": 4,
"variable": "value",
"rule": "local_value_must_be_defined_on_all_reaching_paths",
"message": "Local variable 'value' may be undefined on at least one reaching control-flow path.",
"status": "violated"
}
],
"resolved": []
},
"exceptions": {
"added": [],
"removed": []
},
"impact": {
"changed": [
{
"id": "fn_381caeb25920760b",
"type": "function",
"path": "extra.py",
"symbol": "persist",
"depth": 3,
"base_review_breadth": 0,
"target_review_breadth": 7,
"review_breadth_delta": 7,
"vector_delta": {
"affected_motifs": 2,
"boundary_touchpoints": 3,
"data_sinks": 0,
"direct_callees": 0,
"direct_callers": 1,
"effect_touchpoints": 1,
"likely_tests": 0,
"local_data_values": 0,
"phi_nodes": 0,
"review_files": 1,
"state_coupled_functions": 0,
"state_regions_read": 0,
"state_regions_written": 0,
"transitive_downstream": 0,
"transitive_upstream": 1
},
"base_vector": {
"direct_callers": 0,
"direct_callees": 0,
"transitive_upstream": 0,
"transitive_downstream": 0,
"state_regions_read": 0,
"state_regions_written": 0,
"state_coupled_functions": 0,
"boundary_touchpoints": 0,
"effect_touchpoints": 0,
"affected_motifs": 0,
"review_files": 1,
"local_data_values": 2,
"phi_nodes": 0,
"data_sinks": 1,
"likely_tests": 0
},
"target_vector": {
"direct_callers": 1,
"direct_callees": 0,
"transitive_upstream": 1,
"transitive_downstream": 0,
"state_regions_read": 0,
"state_regions_written": 0,
"state_coupled_functions": 0,
"boundary_touchpoints": 3,
"effect_touchpoints": 1,
"affected_motifs": 2,
"review_files": 2,
"local_data_values": 2,
"phi_nodes": 0,
"data_sinks": 1,
"likely_tests": 0
}
},
{
"id": "fn_4e3d7579479d3d25",
"type": "function",
"path": "app.py",
"symbol": "root",
"depth": 3,
"base_review_breadth": 1,
"target_review_breadth": 8,
"review_breadth_delta": 7,
"vector_delta": {
"affected_motifs": 2,
"boundary_touchpoints": 3,
"data_sinks": 0,
"direct_callees": 1,
"direct_callers": 0,
"effect_touchpoints": 1,
"likely_tests": 0,
"local_data_values": 4,
"phi_nodes": 0,
"review_files": 1,
"state_coupled_functions": 0,
"state_regions_read": 1,
"state_regions_written": 1,
"transitive_downstream": 1,
"transitive_upstream": 0
},
"base_vector": {
"direct_callers": 0,
"direct_callees": 1,
"transitive_upstream": 0,
"transitive_downstream": 1,
"state_regions_read": 0,
"state_regions_written": 0,
"state_coupled_functions": 0,
"boundary_touchpoints": 0,
"effect_touchpoints": 0,
"affected_motifs": 0,
"review_files": 2,
"local_data_values": 2,
"phi_nodes": 0,
"data_sinks": 1,
"likely_tests": 0
},
"target_vector": {
"direct_callers": 0,
"direct_callees": 2,
"transitive_upstream": 0,
"transitive_downstream": 2,
"state_regions_read": 1,
"state_regions_written": 1,
"state_coupled_functions": 0,
"boundary_touchpoints": 3,
"effect_touchpoints": 1,
"affected_motifs": 2,
"review_files": 3,
"local_data_values": 6,
"phi_nodes": 0,
"data_sinks": 1,
"likely_tests": 0
}
},
{
"id": "fn_48ffdf8ff0705994",
"type": "function",
"path": "helper.py",
"symbol": "helper",
"depth": 3,
"base_review_breadth": 1,
"target_review_breadth": 7,
"review_breadth_delta": 6,
"vector_delta": {
"affected_motifs": 2,
"boundary_touchpoints": 3,
"data_sinks": 0,
"direct_callees": 0,
"direct_callers": 0,
"effect_touchpoints": 1,
"likely_tests": 0,
"local_data_values": 0,
"phi_nodes": 0,
"review_files": 0,
"state_coupled_functions": 0,
"state_regions_read": 0,
"state_regions_written": 0,
"transitive_downstream": 0,
"transitive_upstream": 0
},
"base_vector": {
"direct_callers": 1,
"direct_callees": 0,
"transitive_upstream": 1,
"transitive_downstream": 0,
"state_regions_read": 0,
"state_regions_written": 0,
"state_coupled_functions": 0,
"boundary_touchpoints": 0,
"effect_touchpoints": 0,
"affected_motifs": 0,
"review_files": 2,
"local_data_values": 2,
"phi_nodes": 0,
"data_sinks": 1,
"likely_tests": 0
},
"target_vector": {
"direct_callers": 1,
"direct_callees": 0,
"transitive_upstream": 1,
"transitive_downstream": 0,
"state_regions_read": 0,
"state_regions_written": 0,
"state_coupled_functions": 0,
"boundary_touchpoints": 3,
"effect_touchpoints": 1,
"affected_motifs": 2,
"review_files": 2,
"local_data_values": 2,
"phi_nodes": 0,
"data_sinks": 1,
"likely_tests": 0
}
}
],
"meta": {
"evaluated": 3,
"candidate_count": 3,
"cap": 500,
"truncated": false,
"depth": 3
}
},
"possible_renames_or_moves": []
},
"semantic_events": [
{
"kind": "finding_added",
"severity": "high",
"message": "Finding added: possibly_undefined_local at bad.py::broken",
"basis": "detector diff",
"payload": {
"type": "possibly_undefined_local",
"category": "defect",
"severity": "high",
"path": "bad.py",
"symbol": "broken",
"line": 4,
"variable": "value",
"rule": "local_value_must_be_defined_on_all_reaching_paths",
"message": "Local variable 'value' may be undefined on at least one reaching control-flow path.",
"status": "violated"
}
},
{
"kind": "state_writer_added",
"severity": "medium",
"message": "State writer added: root → app:global:CACHE",
"basis": "writes_state relation",
"payload": {
"type": "writes_state",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "state_region_84ae93567ca74dff",
"type": "state_region",
"label": "app:global:CACHE",
"region_kind": "module_global",
"status": "observed",
"confidence": 0.95
},
"resolution": null,
"status": "observed",
"confidence": 0.95,
"callee": null,
"evidence": {
"path": "app.py",
"line": 9,
"end_line": 9,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
}
},
{
"kind": "motif_added",
"severity": "medium",
"message": "Motif added: resource_scope at app.py::root",
"basis": "structural motif inference",
"payload": {
"id": "motif_instance_31c7f624f011b5c7",
"kind": "resource_scope",
"node_id": "fn_4e3d7579479d3d25",
"path": "app.py",
"symbol": "root",
"confidence": 0.92,
"rule": "with/async-with establishes bounded resource scope",
"identity_basis": "structural_features",
"status": "strongly_inferred"
}
},
{
"kind": "motif_added",
"severity": "medium",
"message": "Motif added: read_modify_write at app.py::root",
"basis": "structural motif inference",
"payload": {
"id": "motif_instance_bcc099d6b4330aac",
"kind": "read_modify_write",
"node_id": "fn_4e3d7579479d3d25",
"path": "app.py",
"symbol": "root",
"confidence": 0.86,
"rule": "same function reads and writes the same state target",
"identity_basis": "structural_features",
"status": "strongly_inferred"
}
},
{
"kind": "impact_breadth_changed",
"severity": "medium",
"message": "Review breadth changed by +7: extra.py::persist",
"basis": "Impact Engine depth 3",
"payload": {
"id": "fn_381caeb25920760b",
"type": "function",
"path": "extra.py",
"symbol": "persist",
"depth": 3,
"base_review_breadth": 0,
"target_review_breadth": 7,
"review_breadth_delta": 7,
"vector_delta": {
"affected_motifs": 2,
"boundary_touchpoints": 3,
"data_sinks": 0,
"direct_callees": 0,
"direct_callers": 1,
"effect_touchpoints": 1,
"likely_tests": 0,
"local_data_values": 0,
"phi_nodes": 0,
"review_files": 1,
"state_coupled_functions": 0,
"state_regions_read": 0,
"state_regions_written": 0,
"transitive_downstream": 0,
"transitive_upstream": 1
},
"base_vector": {
"direct_callers": 0,
"direct_callees": 0,
"transitive_upstream": 0,
"transitive_downstream": 0,
"state_regions_read": 0,
"state_regions_written": 0,
"state_coupled_functions": 0,
"boundary_touchpoints": 0,
"effect_touchpoints": 0,
"affected_motifs": 0,
"review_files": 1,
"local_data_values": 2,
"phi_nodes": 0,
"data_sinks": 1,
"likely_tests": 0
},
"target_vector": {
"direct_callers": 1,
"direct_callees": 0,
"transitive_upstream": 1,
"transitive_downstream": 0,
"state_regions_read": 0,
"state_regions_written": 0,
"state_coupled_functions": 0,
"boundary_touchpoints": 3,
"effect_touchpoints": 1,
"affected_motifs": 2,
"review_files": 2,
"local_data_values": 2,
"phi_nodes": 0,
"data_sinks": 1,
"likely_tests": 0
}
}
},
{
"kind": "impact_breadth_changed",
"severity": "medium",
"message": "Review breadth changed by +7: app.py::root",
"basis": "Impact Engine depth 3",
"payload": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"path": "app.py",
"symbol": "root",
"depth": 3,
"base_review_breadth": 1,
"target_review_breadth": 8,
"review_breadth_delta": 7,
"vector_delta": {
"affected_motifs": 2,
"boundary_touchpoints": 3,
"data_sinks": 0,
"direct_callees": 1,
"direct_callers": 0,
"effect_touchpoints": 1,
"likely_tests": 0,
"local_data_values": 4,
"phi_nodes": 0,
"review_files": 1,
"state_coupled_functions": 0,
"state_regions_read": 1,
"state_regions_written": 1,
"transitive_downstream": 1,
"transitive_upstream": 0
},
"base_vector": {
"direct_callers": 0,
"direct_callees": 1,
"transitive_upstream": 0,
"transitive_downstream": 1,
"state_regions_read": 0,
"state_regions_written": 0,
"state_coupled_functions": 0,
"boundary_touchpoints": 0,
"effect_touchpoints": 0,
"affected_motifs": 0,
"review_files": 2,
"local_data_values": 2,
"phi_nodes": 0,
"data_sinks": 1,
"likely_tests": 0
},
"target_vector": {
"direct_callers": 0,
"direct_callees": 2,
"transitive_upstream": 0,
"transitive_downstream": 2,
"state_regions_read": 1,
"state_regions_written": 1,
"state_coupled_functions": 0,
"boundary_touchpoints": 3,
"effect_touchpoints": 1,
"affected_motifs": 2,
"review_files": 3,
"local_data_values": 6,
"phi_nodes": 0,
"data_sinks": 1,
"likely_tests": 0
}
}
},
{
"kind": "impact_breadth_changed",
"severity": "medium",
"message": "Review breadth changed by +6: helper.py::helper",
"basis": "Impact Engine depth 3",
"payload": {
"id": "fn_48ffdf8ff0705994",
"type": "function",
"path": "helper.py",
"symbol": "helper",
"depth": 3,
"base_review_breadth": 1,
"target_review_breadth": 7,
"review_breadth_delta": 6,
"vector_delta": {
"affected_motifs": 2,
"boundary_touchpoints": 3,
"data_sinks": 0,
"direct_callees": 0,
"direct_callers": 0,
"effect_touchpoints": 1,
"likely_tests": 0,
"local_data_values": 0,
"phi_nodes": 0,
"review_files": 0,
"state_coupled_functions": 0,
"state_regions_read": 0,
"state_regions_written": 0,
"transitive_downstream": 0,
"transitive_upstream": 0
},
"base_vector": {
"direct_callers": 1,
"direct_callees": 0,
"transitive_upstream": 1,
"transitive_downstream": 0,
"state_regions_read": 0,
"state_regions_written": 0,
"state_coupled_functions": 0,
"boundary_touchpoints": 0,
"effect_touchpoints": 0,
"affected_motifs": 0,
"review_files": 2,
"local_data_values": 2,
"phi_nodes": 0,
"data_sinks": 1,
"likely_tests": 0
},
"target_vector": {
"direct_callers": 1,
"direct_callees": 0,
"transitive_upstream": 1,
"transitive_downstream": 0,
"state_regions_read": 0,
"state_regions_written": 0,
"state_coupled_functions": 0,
"boundary_touchpoints": 3,
"effect_touchpoints": 1,
"affected_motifs": 2,
"review_files": 2,
"local_data_values": 2,
"phi_nodes": 0,
"data_sinks": 1,
"likely_tests": 0
}
}
},
{
"kind": "effect_added",
"severity": "medium",
"message": "Effect added: root → file_io",
"basis": "effect relation",
"payload": {
"type": "effect",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "effect_531521d23c3d9812",
"type": "effect",
"label": "file_io",
"status": "strongly_inferred",
"confidence": 0.68
},
"resolution": null,
"status": "strongly_inferred",
"confidence": 0.68,
"callee": "open",
"evidence": {
"path": "app.py",
"line": 10,
"end_line": 10,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
}
},
{
"kind": "dependency_added",
"severity": "medium",
"message": "Dependency added: app.py → extra.py",
"basis": "normalized imports relation",
"payload": {
"type": "imports",
"source": {
"id": "file_13cce7fd076299c8",
"type": "file",
"label": "app.py",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "file_4d74821404433b49",
"type": "file",
"label": "extra.py",
"path": "extra.py",
"module": "extra",
"status": "observed",
"confidence": 1.0
},
"resolution": "local",
"status": "observed",
"confidence": 1.0,
"callee": null,
"evidence": {
"path": "app.py",
"line": 2,
"end_line": 2,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
}
},
{
"kind": "call_added",
"severity": "medium",
"message": "Call added: root → persist",
"basis": "normalized call relation",
"payload": {
"type": "calls",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "fn_381caeb25920760b",
"type": "function",
"label": "persist",
"symbol": "persist",
"path": "extra.py",
"module": "extra",
"status": "observed",
"confidence": 1.0
},
"resolution": "local",
"status": "observed",
"confidence": 0.92,
"callee": "persist",
"evidence": {
"path": "app.py",
"line": 12,
"end_line": 12,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
}
},
{
"kind": "state_reader_added",
"severity": "low",
"message": "State reader added: root → app:global:CACHE",
"basis": "reads_state relation",
"payload": {
"type": "reads_state",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "state_region_84ae93567ca74dff",
"type": "state_region",
"label": "app:global:CACHE",
"region_kind": "module_global",
"status": "observed",
"confidence": 0.95
},
"resolution": null,
"status": "observed",
"confidence": 0.95,
"callee": null,
"evidence": {
"path": "app.py",
"line": 8,
"end_line": 8,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
}
},
{
"kind": "call_added",
"severity": "low",
"message": "Call added: root → str",
"basis": "normalized call relation",
"payload": {
"type": "calls",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "boundary_b99cdd07851017b7",
"type": "boundary_call",
"label": "str",
"status": "unresolved",
"confidence": 0.4
},
"resolution": "boundary",
"status": "unresolved",
"confidence": 0.4,
"callee": "str",
"evidence": {
"path": "app.py",
"line": 11,
"end_line": 11,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
}
},
{
"kind": "call_added",
"severity": "low",
"message": "Call added: root → open",
"basis": "normalized call relation",
"payload": {
"type": "calls",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "boundary_3dbe928d4a809b5c",
"type": "boundary_call",
"label": "open",
"status": "unresolved",
"confidence": 0.4
},
"resolution": "boundary",
"status": "unresolved",
"confidence": 0.4,
"callee": "open",
"evidence": {
"path": "app.py",
"line": 10,
"end_line": 10,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"source_kind": "code"
}
}
},
{
"kind": "call_added",
"severity": "low",
"message": "Call added: root → f.write",
"basis": "normalized call relation",
"payload": {
"type": "calls",
"source": {
"id": "fn_4e3d7579479d3d25",
"type": "function",
"label": "root",
"symbol": "root",
"path": "app.py",
"module": "app",
"status": "observed",
"confidence": 1.0
},
"target": {
"id": "boundary_4300948e30f37326",
"type": "boundary_call",
"label": "f.write",
"status": "unresolved",
"confidence": 0.4
},
"resolution": "boundary",
"status": "unresolved",
"confidence": 0.4,
"callee": "f.write",
"evidence": {
"path": "app.py",
"line": 11,
"end_line": 11,
"source_hash": "2ec088553b6e6f879a433343eeb5787d1f3ae618fea1700e555576f1617c8fb2",
"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.