Exploring Semantic Stability Across Reviews in the Linux Kernel
Lucas Ciziks, Paulo Meirelles, Marco Aurélio Gerosa
Universidade de São Paulo · Northern Arizona University
cs.SE, cs.AI, cs.SY, eess.SY
Submitted: 2026-08-10
Updated: 2026-08-12
Comments: VEM 2026 - 14th Workshop on Software Visualization, Maintenance and Evolution
License: http://creativecommons.org/licenses/by/4.0/
Importance score: 75/100
The gist: This paper presents a function-level measurement of semantic stability across code review in the Linux kernel, tracking 10,117 function trajectories through the patch history of the Linux IIO
Terminology
Summary
This paper presents a function-level measurement of semantic stability across code review in the Linux kernel, tracking 10,117 function trajectories through the patch history of the Linux IIO subsystem. The authors compare similarity scores against unrelated function pairs as a baseline, using UniXcoder embeddings with attention-mask-weighted mean pooling.
The study addresses two research questions: RQ1 asks whether a function’s semantic purpose changes between the first and last submitted version of a patch series relative to unrelated code, and RQ2 asks whether drift is spread evenly across revisions or concentrated in a specific part of the process.
A naive reading yields near-total similarity, but this is largely an artifact of composition: 75.3% of tracked trajectories are never textually modified between versions, contributing a trivial 100% similarity that inflates the headline. Restricting to the 2,501 trajectories with a real edit, semantic purpose is still largely preserved (mean similarity 0.990 vs. a 0.909 baseline). The authors find that drift appears to concentrate in the first review round mainly because later rounds contain more functions that nobody touched, not because edits become more conservative over time. After controlling for this, a statistically detectable but small residual effect remains (rank-biserial correlation r ≈ 0.05).
The paper identifies a key limitation: even heavily edited trajectories (500+ cumulative lines, n=134) still average 0.996 similarity, far above the 0.910 null. The likely mechanism is dilution—mean pooling across all token representations produces a single 768-dimensional vector, redistributing the signal of a localized 2-line fix across hundreds of token representations that did not change. The authors conclude that cosine similarity on whole-snippet embeddings is structurally the wrong resolution for spatially localized relevant change, matching findings from independent work on vulnerability patches and controlled code transformations.
The paper’s main contribution is a research perspective: a function-level measurement of semantic stability across kernel patch review, with an account of what a naive reading of that measurement gets wrong and why. The authors propose a research agenda including: reporting the edited-only subset by default, validating the trajectory-linking heuristic, sharpening the instrument with Euclidean distance and diff-region embeddings, adding a structural (AST-based) signal, and extending the corpus beyond IIO.
Improvements for AI systems
Improvements to AI Systems:
-
Add a
semantic-change localization
module to code-review AI. Instead of scoring whole-function similarity, the system identifies which specific diff hunks carry semantic drift. It computes embeddings for the changed lines only (e.g., via diff-region pooling) and reports a per-hunk similarity score, flagging functions where a small edit causes a large localized semantic shift—even if whole-snippet cosine similarity remains near 1.0. -
Implement an
edited-only baseline
filter in code-evaluation pipelines. When measuring code similarity or change impact, the AI automatically separates trajectories with zero textual edits from those with real edits. It reports both metrics (all-trajectories vs. edited-only) and uses the edited-only mean as the primary signal, preventing dilution artifacts from inflating stability scores. -
Replace mean pooling with attention-weighted sparse pooling for code embeddings. The improved system uses a learned mask that selects only token representations that changed between versions (or are semantically salient), then computes cosine similarity on that subset. This avoids the dilution problem where a 2-line fix is averaged over 500 unchanged tokens.
-
Add a structural (AST-based) drift detector as a second signal. The AI parses the function’s abstract syntax tree before and after each patch revision, computes tree-edit distance, and correlates it with embedding similarity. This catches semantic changes that cosine similarity misses (e.g., control-flow rewrites with identical token distribution).
-
Build a
revision-stage drift predictor
for multi-round code review. The system learns to predict which functions will experience semantic drift in later review rounds, conditioned on the first-round edit size and location. It uses the paper’s finding that drift concentrates in round 1 mainly due to untouched functions, so the predictor explicitly controls for edit presence and reports a residual drift score per round. -
Add a
null-baseline-aware similarity reporter
to code-search or clone-detection tools. The AI always compares a candidate function’s similarity against a distribution of unrelated function pairs (e.g., from the same subsystem) and reports a z-score or percentile, not a raw cosine. This prevents users from misinterpreting a 0.99 score as meaningful when the null is 0.91. -
Implement a
trajectory-linking validator
for patch-history mining. When tracking a function across versions, the AI verifies the link using both textual overlap and structural similarity (e.g., AST node identity). If the link is ambiguous (e.g., function renamed and moved), it flags the trajectory as low-confidence and excludes it from downstream semantic-stability analysis. -
Create a
semantic-stability dashboard
for kernel maintainers. The improved system ingests a patch series and outputs: (a) per-function edited-only similarity, (b) a list of functions where drift exceeds the 0.05 rank-biserial threshold, (c) the specific diff hunks responsible, and (d) a recommendation to split the patch if drift is concentrated in a single hunk, enabling finer-grained review.
What the improved AI system can do:
It can accurately detect when a small code edit changes a function’s purpose, even when whole-snippet similarity looks stable; it avoids false confidence from untouched functions; it localizes semantic drift to specific lines or AST nodes; it predicts which review rounds will introduce drift; and it provides maintainers with actionable, baseline-corrected metrics for deciding whether a patch series preserves intended behavior.
Abstract
Code review is credited with substantially changing a patch's code between its first submission and the version that eventually lands. However, prior work typically studied only the final merged patch without comparing it to the first submission. We present a function-level measurement that tracks 10,117 trajectories (each function followed across the numbered revisions of one patch series) through the patch history of the Linux IIO subsystem, comparing similarity scores against unrelated function pairs as a baseline. A naive reading yields near-total similarity, but this is largely an artifact of composition: 75.3% of tracked trajectories are never textually modified between versions, contributing a trivial 100% similarity that inflates the headline. Restricting to the trajectories with a real edit, semantic purpose is still largely preserved (mean similarity 0.990 vs. a 0.909 baseline), but drift appears to concentrate in the first review round mainly because later rounds contain more functions that nobody touched, not because edits become more conservative over time. After controlling for it, a statistically detectable but small residual effect remains. This points to an open question: whether near-ceiling similarity reflects preserved purpose or a measurement tool that cannot detect the significance of small, localized edits. We present this work as a first look and outline next steps.
Sources
- Beyond Crash-to-Patch: Patch Evolution for Linux Kernel Repair
- Residual Risk Assessment in Benign Code: How Far Are We? A Multi-Model Semantic and Structural Similarity Approach
- On the Use of Commit Messages for Corrective Software Maintenance: A Systematic Mapping Study
- Mapping NVD Records to Their Vulnerability-fixing Commits: How Hard is It?
- How Small Transformation Expose the Weakness of Semantic Similarity Measures
Related papers
- Falsification-Based Verification of LLM-Generated Optimization Models: Sound Test Batteries and Their Detection Limits
- GitSkills: A Dataset of Agent Skills on GitHub
- For Coding Agents, the Repository Matters
- SABER: Benchmarking Operational Safety of LLM Coding Agents in Stateful Project Workspaces
- PackMonitor: Enabling Zero Package Hallucinations Through Decoding-Time Monitoring
- IntentCoding: Amplifying User Intent in Code Generation