VeeReview: Measuring Build-Verify Pairs in Agent-Authored Pull Requests from a V-Model Perspective
Organizations: Department of Computer Science, Michigan Technological University, Houghton, Michigan, United States
Abstract
Context: Reviewing a pull request requires verification evidence that addresses the proposed change. Coding agent benchmarks and studies of pull request outcomes do not directly assess this relationship. Objective: We test whether the V-Model's build and verify pairs can measure verification evidence in pull requests and support comparisons between agent-authored and human-authored changes. Method: VeeReview classifies four build and verify pairs using repository signals and a language-model judge. Three pairs use model judgements constrained by deterministic signals, and a rule over the diff and repository tree decides Module Design-Unit Test. We evaluated VeeReview against a 25-pull request reference set labelled by two raters and applied it to 1,454 matched pairs of agent and human pull requests from 741 repositories. Results: VeeReview assigned lower build-only rates to agent-authored pull requests on all four pairs, contrary to the preregistered hypothesis (mixed-effects odds ratios 0.52 to 0.86). Architecture-Integration was not significant. Standardization for linked issues, shipped tests and size reduced matched-rate differences by 34% to 60%, and the rule-decided pair's standardized interval included zero. The instrument did not meet its preregistered calibration criterion: agreement with adjudicated labels was 4% to 60% against a required 80%, and inter-rater agreement was weak (kappa = 0.154). Conclusions: The rule-decided pair shows that a process measure judged by a language model partly reflects how a pull request is presented rather than the verification work behind it. We report the cohort differences as observations made with this instrument, and we argue that such measures need a mechanically decided component and a validated human reference before they can support comparisons of verification practice.
Figures & tables
| Match state | Build half | Verify half | Meaning |
|---|---|---|---|
| matched | present | present | Evidence of the work and of the corresponding check is present |
| build-only | present | absent | Evidence of the work is present but evidence of the corresponding check is not |
| verify-only | absent | present | Evidence of a check is present without evidence of corresponding work at this level |
| unverified | claimed | claimed | The model claimed half was present but cited no evidence found in the pull request |
| not applicable | – | – | Neither half is relevant to the change |
| Build half | Verify half | The question the pair asks | Decided by |
|---|---|---|---|
| Requirement | Acceptance | Is a requirement stated, and is there evidence it was accepted? | model, constrained by signals |
| System Design | System Test | Did system level behavior change, and is it exercised end to end? | model, constrained by signals |
| Architecture | Integration | Did a boundary or interface change, and is the integration exercised? | model, constrained by signals |
| Module Design | Unit Test | Did module logic change, and did the unit test arrive with it? | deterministic rule |
| Agent cohort | Human cohort | |
|---|---|---|
| Matched pairs | 1,454 | 1,454 |
| Repositories | 741 | 741 |
| Median lines changed | 84 | 65 |
| Mean lines changed | 1,259 | 466 |
| Links an issue | 29.7% | 11.6% |
| Ships tests | 32.5% | 23.7% |
| R1 | R2 | Adjudicated | |
|---|---|---|---|
| Requirement Acceptance (%) | 8 | 28 | 4 |
| System Design System Test (%) | 8 | 44 | 32 |
| Architecture Integration (%) | 48 | 72 | 60 |
| Module Design Unit Test (%) | 32 | 52 | 44 |
| Wrongly withheld matched (labels) | 48 | 16 | 30 |
| Wrongly awarded matched (labels) | 12 | 9 | 11 |
| Pair | Gap (pp) | 95% CI | Discordant a/h | Agent share | p |
|---|---|---|---|---|---|
| Requirement Acceptance | +16.8 | [+13.3, +20.2] | 208/55 | 79.1% | <10 -9 |
| System Design System Test | +18.0 | [+14.1, +22.1] | 162/44 | 78.6% | <10 -9 |
| Architecture Integration | +16.3 | [+12.4, +20.1] | 101/30 | 77.1% | <10 -9 |
| Module Design Unit Test a | +6.1 | [+2.4, +9.8] | 168/114 | 59.6% | 0.0016 |
| Pair | Cohort | matched | unverified | verify-only | build-only | na |
|---|---|---|---|---|---|---|
| Requirement Acceptance | agent | 21.6 | 4.1 | 2.7 | 52.2 | 19.4 |
| human | 7.2 | 9.6 | 1.9 | 53.2 | 28.1 | |
| System Design System Test | agent | 21.7 | 5.3 | 1.4 | 37.3 | 34.4 |
| human | 10.0 | 9.6 | 0.4 | 47.0 | 32.9 | |
| Architecture Integration | agent | 15.1 | 5.2 | 0.7 | 32.9 | 46.1 |
| human | 5.8 | 11.6 | 0.4 | 32.3 | 49.9 |
| Pair | Agent | Human | Crude gap | Standardized gap | Retained |
|---|---|---|---|---|---|
| Requirement Acceptance | 26.8 | 10.0 | +16.8 | +6.8 | 40% |
| System Design System Test | 33.0 | 15.0 | +18.0 | +10.7 | 59% |
| Architecture Integration | 28.0 | 11.7 | +16.3 | +10.8 | 66% |
| Module Design Unit Test a | 57.7 | 51.6 | +6.1 | -1.2 | — |
| Pair | Crude | Standardized, issue tests size | Standardized, issue size | Retained |
|---|---|---|---|---|
| Requirement Acceptance | +16.8 | +6.8 [+3.9, +10.2] | +7.2 [+4.2, +10.3] | 40% / 43% |
| System Design System Test | +18.0 | +10.7 [+7.2, +14.7] | +12.7 [+8.7, +17.0] | 59% / 71% |
| Architecture Integration | +16.3 | +10.8 [+8.2, +14.5] | +13.0 [+9.4, +17.0] | 66% / 79% |
| Module Design Unit Test a | +6.1 | 1.2 [ 3.9, +2.4] | +3.1 [ 0.4, +7.1] | — / 51% |
| Pair | build-only % | 95% CI | n | Rank | Rank held |
|---|---|---|---|---|---|
| Requirement Acceptance | 71.6 | [68.1, 74.3] | 2,872 | 1 | 100.0% |
| System Design System Test | 50.9 | [38.7, 64.5] | 2,468 | 3 | 78.9% |
| Architecture Integration | 57.4 | [53.0, 64.5] | 2,002 | 2 | 78.9% |
| Module Design Unit Test a | 37.2 | [27.0, 49.6] | 2,644 | 4 | 100.0% |
| PR size (lines changed) | matched % | build-only % | na % | n rows | truncated |
|---|---|---|---|---|---|
| XS (<50) | 13.3 | 36.1 | 45.8 | 5,844 | 0.0% |
| S (50-200) | 27.2 | 39.6 | 24.6 | 4,164 | 0.0% |
| M (200-1k) | 34.3 | 38.3 | 19.5 | 3,004 | 0.4% |
| L (1k-5k) | 38.0 | 34.5 | 18.5 | 1,152 | 22.6% |
| XL (5k+) | 32.5 | 31.8 | 24.1 | 428 | 68.2% |
| RQ | Finding | Effect |
|---|---|---|
| RQ1 | Agent PRs match more often than matched human PRs on every pair, so the preregistered direction is reversed | +16.3 to +18.0pp |
| RQ1 | Standardizing on observable artifacts (issue link, tests, size) reduces it by 34% to 60% | +6.8 to +10.8pp (40–66% retained) |
| RQ1 | The pair decided by rule rather than by the model shows no difference that excludes zero once standardized | 1.2pp [ 3.9, +2.4] |
| RQ1 | Paired overall score, agent human | +0.91 [+0.74, +1.08] |
| RQ2 | Requirement Acceptance is the pair agents most often leave build-only, in 100% of resamples | 71.6% build-only |
| RQ2 | The middle two pairs are not separable, so the locus claim holds for the end points only | 78.9% full ordering stability |
Automated Code Review
Automated code review uses software analysis and AI to find defects, assess changes, and support pull-request decisions.
See all 50 papers