PBSOI Semantic Diff v0.6

Base: /tmp/pbsio_git_irbczkvt/base_snapshot
Target: /tmp/pbsio_git_irbczkvt/head_snapshot
7
Semantic events
0
Dependencies Δ
0
Calls Δ
1
State writers Δ
0
Effects Δ
1
Motifs Δ
1
Findings Δ
0
Exceptions Δ
3
Impact targets Δ

Semantic events

SeverityKindChangeBasis
highfinding_addedFinding added: possibly_undefined_local at app.py::rootdetector diff
mediumstate_writer_addedState writer added: root → app:global:CACHEwrites_state relation
mediummotif_addedMotif added: read_modify_write at app.py::rootstructural motif inference
lowstate_reader_addedState reader added: root → app:global:CACHEreads_state relation
lowimpact_breadth_changedReview breadth changed by +1: test_app.py::test_rootImpact Engine depth 3
lowimpact_breadth_changedReview breadth changed by +1: app.py::rootImpact Engine depth 3
lowimpact_breadth_changedReview breadth changed by +1: app.py::helperImpact Engine depth 3

Impact breadth changes

Impact Δ is bounded review-scope change, not defect truth.

TargetΔ breadthBeforeAfterVector Δ
test_app.py::test_root+123{"affected_motifs": 1, "boundary_touchpoints": 0, "data_sinks": 0, "direct_callees": 0, "direct_callers": 0, "effect_touchpoints": 0, "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}
app.py::root+123{"affected_motifs": 1, "boundary_touchpoints": 0, "data_sinks": 0, "direct_callees": 0, "direct_callers": 0, "effect_touchpoints": 0, "likely_tests": 0, "local_data_values": 3, "phi_nodes": 1, "review_files": 0, "state_coupled_functions": 0, "state_regions_read": 1, "state_regions_written": 1, "transitive_downstream": 0, "transitive_upstream": 0}
app.py::helper+123{"affected_motifs": 1, "boundary_touchpoints": 0, "data_sinks": 0, "direct_callees": 0, "direct_callers": 0, "effect_touchpoints": 0, "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.

FileBase SHATarget SHABytes Δ
app.py98f979337e5027806edd292e6487+84

Possible rename / move candidates

Only unique exact normalized function-shape matches are shown; these remain inferred candidates.

FromToConfidenceBasis
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": "/tmp/pbsio_git_irbczkvt/base_snapshot",
    "analyzer_version": "0.5.0",
    "metrics": {
      "loaded_files": 2,
      "nodes": 9,
      "edges": 12,
      "node_types": {
        "file": 2,
        "function": 3,
        "data_value": 2,
        "data_sink": 2
      },
      "edge_types": {
        "contains": 3,
        "imports": 1,
        "defines": 2,
        "contains_data": 2,
        "returns_value": 2,
        "calls": 2
      },
      "resolved_local_calls": 2,
      "boundary_calls": 0,
      "findings_by_category": {},
      "findings_by_severity": {},
      "motif_instances": 0,
      "motif_clusters": 1,
      "data_values": 2,
      "phi_nodes": 0,
      "data_edges": 4,
      "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": "/tmp/pbsio_git_irbczkvt/head_snapshot",
    "analyzer_version": "0.5.0",
    "metrics": {
      "loaded_files": 2,
      "nodes": 14,
      "edges": 20,
      "node_types": {
        "file": 2,
        "function": 3,
        "data_value": 3,
        "data_sink": 2,
        "control": 1,
        "state_region": 1,
        "data_phi": 1,
        "data_undefined": 1
      },
      "edge_types": {
        "contains": 3,
        "imports": 1,
        "defines": 4,
        "contains_data": 2,
        "returns_value": 2,
        "controls": 1,
        "writes_state": 1,
        "reads_state": 1,
        "guards": 1,
        "phi_input": 2,
        "calls": 2
      },
      "resolved_local_calls": 2,
      "boundary_calls": 0,
      "findings_by_category": {
        "defect": 1
      },
      "findings_by_severity": {
        "high": 1
      },
      "motif_instances": 1,
      "motif_clusters": 0,
      "data_values": 3,
      "phi_nodes": 1,
      "data_edges": 9,
      "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": 0,
    "files_removed": 0,
    "files_modified": 1,
    "entities_added": 0,
    "entities_removed": 0,
    "dependencies_added": 0,
    "dependencies_removed": 0,
    "calls_added": 0,
    "calls_removed": 0,
    "state_readers_added": 1,
    "state_readers_removed": 0,
    "state_writers_added": 1,
    "state_writers_removed": 0,
    "effects_added": 0,
    "effects_removed": 0,
    "motifs_added": 1,
    "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": 7
  },
  "changes": {
    "files": {
      "added": [],
      "removed": [],
      "modified": [
        {
          "path": "app.py",
          "base_sha256": "98f979337e50277dd6af4d7077c28dc9bc297a1610918f08ada1f3a77636e163",
          "target_sha256": "806edd292e6487fe9dfcf1fa5e5cd0b988d2ba23b633bb80918b0cb331079aae",
          "base_bytes": 67,
          "target_bytes": 151
        }
      ]
    },
    "entities": {
      "added": [],
      "removed": []
    },
    "relations": {
      "calls": {
        "added": [],
        "removed": []
      },
      "effect": {
        "added": [],
        "removed": []
      },
      "imports": {
        "added": [],
        "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": 10,
              "end_line": 10,
              "source_hash": "806edd292e6487fe9dfcf1fa5e5cd0b988d2ba23b633bb80918b0cb331079aae",
              "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": 8,
              "end_line": 8,
              "source_hash": "806edd292e6487fe9dfcf1fa5e5cd0b988d2ba23b633bb80918b0cb331079aae",
              "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"
        }
      ],
      "removed": []
    },
    "findings": {
      "added": [
        {
          "type": "possibly_undefined_local",
          "category": "defect",
          "severity": "high",
          "path": "app.py",
          "symbol": "root",
          "line": 11,
          "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_ea0b7c39d8d78995",
          "type": "function",
          "path": "test_app.py",
          "symbol": "test_root",
          "depth": 3,
          "base_review_breadth": 2,
          "target_review_breadth": 3,
          "review_breadth_delta": 1,
          "vector_delta": {
            "affected_motifs": 1,
            "boundary_touchpoints": 0,
            "data_sinks": 0,
            "direct_callees": 0,
            "direct_callers": 0,
            "effect_touchpoints": 0,
            "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": 0,
            "direct_callees": 1,
            "transitive_upstream": 0,
            "transitive_downstream": 2,
            "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": 0,
            "phi_nodes": 0,
            "data_sinks": 0,
            "likely_tests": 0
          },
          "target_vector": {
            "direct_callers": 0,
            "direct_callees": 1,
            "transitive_upstream": 0,
            "transitive_downstream": 2,
            "state_regions_read": 0,
            "state_regions_written": 0,
            "state_coupled_functions": 0,
            "boundary_touchpoints": 0,
            "effect_touchpoints": 0,
            "affected_motifs": 1,
            "review_files": 2,
            "local_data_values": 0,
            "phi_nodes": 0,
            "data_sinks": 0,
            "likely_tests": 0
          }
        },
        {
          "id": "fn_4e3d7579479d3d25",
          "type": "function",
          "path": "app.py",
          "symbol": "root",
          "depth": 3,
          "base_review_breadth": 2,
          "target_review_breadth": 3,
          "review_breadth_delta": 1,
          "vector_delta": {
            "affected_motifs": 1,
            "boundary_touchpoints": 0,
            "data_sinks": 0,
            "direct_callees": 0,
            "direct_callers": 0,
            "effect_touchpoints": 0,
            "likely_tests": 0,
            "local_data_values": 3,
            "phi_nodes": 1,
            "review_files": 0,
            "state_coupled_functions": 0,
            "state_regions_read": 1,
            "state_regions_written": 1,
            "transitive_downstream": 0,
            "transitive_upstream": 0
          },
          "base_vector": {
            "direct_callers": 1,
            "direct_callees": 1,
            "transitive_upstream": 1,
            "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": 1
          },
          "target_vector": {
            "direct_callers": 1,
            "direct_callees": 1,
            "transitive_upstream": 1,
            "transitive_downstream": 1,
            "state_regions_read": 1,
            "state_regions_written": 1,
            "state_coupled_functions": 0,
            "boundary_touchpoints": 0,
            "effect_touchpoints": 0,
            "affected_motifs": 1,
            "review_files": 2,
            "local_data_values": 5,
            "phi_nodes": 1,
            "data_sinks": 1,
            "likely_tests": 1
          }
        },
        {
          "id": "fn_161e6877e31012b3",
          "type": "function",
          "path": "app.py",
          "symbol": "helper",
          "depth": 3,
          "base_review_breadth": 2,
          "target_review_breadth": 3,
          "review_breadth_delta": 1,
          "vector_delta": {
            "affected_motifs": 1,
            "boundary_touchpoints": 0,
            "data_sinks": 0,
            "direct_callees": 0,
            "direct_callers": 0,
            "effect_touchpoints": 0,
            "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": 2,
            "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": 1
          },
          "target_vector": {
            "direct_callers": 1,
            "direct_callees": 0,
            "transitive_upstream": 2,
            "transitive_downstream": 0,
            "state_regions_read": 0,
            "state_regions_written": 0,
            "state_coupled_functions": 0,
            "boundary_touchpoints": 0,
            "effect_touchpoints": 0,
            "affected_motifs": 1,
            "review_files": 2,
            "local_data_values": 2,
            "phi_nodes": 0,
            "data_sinks": 1,
            "likely_tests": 1
          }
        }
      ],
      "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 app.py::root",
      "basis": "detector diff",
      "payload": {
        "type": "possibly_undefined_local",
        "category": "defect",
        "severity": "high",
        "path": "app.py",
        "symbol": "root",
        "line": 11,
        "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": 8,
          "end_line": 8,
          "source_hash": "806edd292e6487fe9dfcf1fa5e5cd0b988d2ba23b633bb80918b0cb331079aae",
          "source_kind": "code"
        }
      }
    },
    {
      "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": "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": 10,
          "end_line": 10,
          "source_hash": "806edd292e6487fe9dfcf1fa5e5cd0b988d2ba23b633bb80918b0cb331079aae",
          "source_kind": "code"
        }
      }
    },
    {
      "kind": "impact_breadth_changed",
      "severity": "low",
      "message": "Review breadth changed by +1: test_app.py::test_root",
      "basis": "Impact Engine depth 3",
      "payload": {
        "id": "fn_ea0b7c39d8d78995",
        "type": "function",
        "path": "test_app.py",
        "symbol": "test_root",
        "depth": 3,
        "base_review_breadth": 2,
        "target_review_breadth": 3,
        "review_breadth_delta": 1,
        "vector_delta": {
          "affected_motifs": 1,
          "boundary_touchpoints": 0,
          "data_sinks": 0,
          "direct_callees": 0,
          "direct_callers": 0,
          "effect_touchpoints": 0,
          "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": 0,
          "direct_callees": 1,
          "transitive_upstream": 0,
          "transitive_downstream": 2,
          "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": 0,
          "phi_nodes": 0,
          "data_sinks": 0,
          "likely_tests": 0
        },
        "target_vector": {
          "direct_callers": 0,
          "direct_callees": 1,
          "transitive_upstream": 0,
          "transitive_downstream": 2,
          "state_regions_read": 0,
          "state_regions_written": 0,
          "state_coupled_functions": 0,
          "boundary_touchpoints": 0,
          "effect_touchpoints": 0,
          "affected_motifs": 1,
          "review_files": 2,
          "local_data_values": 0,
          "phi_nodes": 0,
          "data_sinks": 0,
          "likely_tests": 0
        }
      }
    },
    {
      "kind": "impact_breadth_changed",
      "severity": "low",
      "message": "Review breadth changed by +1: app.py::root",
      "basis": "Impact Engine depth 3",
      "payload": {
        "id": "fn_4e3d7579479d3d25",
        "type": "function",
        "path": "app.py",
        "symbol": "root",
        "depth": 3,
        "base_review_breadth": 2,
        "target_review_breadth": 3,
        "review_breadth_delta": 1,
        "vector_delta": {
          "affected_motifs": 1,
          "boundary_touchpoints": 0,
          "data_sinks": 0,
          "direct_callees": 0,
          "direct_callers": 0,
          "effect_touchpoints": 0,
          "likely_tests": 0,
          "local_data_values": 3,
          "phi_nodes": 1,
          "review_files": 0,
          "state_coupled_functions": 0,
          "state_regions_read": 1,
          "state_regions_written": 1,
          "transitive_downstream": 0,
          "transitive_upstream": 0
        },
        "base_vector": {
          "direct_callers": 1,
          "direct_callees": 1,
          "transitive_upstream": 1,
          "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": 1
        },
        "target_vector": {
          "direct_callers": 1,
          "direct_callees": 1,
          "transitive_upstream": 1,
          "transitive_downstream": 1,
          "state_regions_read": 1,
          "state_regions_written": 1,
          "state_coupled_functions": 0,
          "boundary_touchpoints": 0,
          "effect_touchpoints": 0,
          "affected_motifs": 1,
          "review_files": 2,
          "local_data_values": 5,
          "phi_nodes": 1,
          "data_sinks": 1,
          "likely_tests": 1
        }
      }
    },
    {
      "kind": "impact_breadth_changed",
      "severity": "low",
      "message": "Review breadth changed by +1: app.py::helper",
      "basis": "Impact Engine depth 3",
      "payload": {
        "id": "fn_161e6877e31012b3",
        "type": "function",
        "path": "app.py",
        "symbol": "helper",
        "depth": 3,
        "base_review_breadth": 2,
        "target_review_breadth": 3,
        "review_breadth_delta": 1,
        "vector_delta": {
          "affected_motifs": 1,
          "boundary_touchpoints": 0,
          "data_sinks": 0,
          "direct_callees": 0,
          "direct_callers": 0,
          "effect_touchpoints": 0,
          "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": 2,
          "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": 1
        },
        "target_vector": {
          "direct_callers": 1,
          "direct_callees": 0,
          "transitive_upstream": 2,
          "transitive_downstream": 0,
          "state_regions_read": 0,
          "state_regions_written": 0,
          "state_coupled_functions": 0,
          "boundary_touchpoints": 0,
          "effect_touchpoints": 0,
          "affected_motifs": 1,
          "review_files": 2,
          "local_data_values": 2,
          "phi_nodes": 0,
          "data_sinks": 1,
          "likely_tests": 1
        }
      }
    }
  ],
  "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.