## TL;DR

The dry run and the real merge disagreed. Never trust the dry run blindly: diff its logic against the apply path, and run the apply on a sample first.

## Error

```text
dry-run report did not match applied merge results
```

## Steps

1. Diff the dry-run logic against the apply logic Expected: you find the divergence.
2. Fix whichever side is wrong Expected: they agree.
3. Run the apply on a small sample and compare Expected: the sample matches.
4. Then run the full apply Expected: results match the report.

## When to use

- Dry run and apply disagree
- The two paths diverged

## When not to use

- They agree now (then it was a data race)
- The dry run is right (then fix the apply)

## Tool compatibility

- Dedup dry runs
- Merge jobs

## Variant phrasings

### dry run mismatch merge

The dry-run and apply paths diverged. Diff them.

### dedup dry run wrong

Same: test the apply on a sample.

## Why it happens

Dry runs often skip the write-back validation the real path hits. Agents present the dry run as a promise.

## Edge cases

- Data changes between dry run and apply; keep the window short
- Log both for audit

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_xeamYsOzoyPQffLAT3y_mA
