ea64b005
Correct the single-revision diff claim in the revision-refs design
a73x 2026-08-09 18:49
Commit message
docs/superpowers/specs/2026-08-09-patch-revision-refs-design.md
| Old | New | ||
|---|---|---|---|
| @@ -106,9 +106,16 @@ and there is no way to reconstruct where an earlier revision stood. | |||
| 106 | `interdiff` (`patch.rs:501-525`) is currently a flat tree-to-tree diff between | 106 | `interdiff` (`patch.rs:501-525`) is currently a flat tree-to-tree diff between |
| 107 | two revision trees with no base awareness. When a rebase separates the two | 107 | two revision trees with no base awareness. When a rebase separates the two |
| 108 | revisions, the result includes every upstream commit rebased over, burying the | 108 | revisions, the result includes every upstream commit rebased over, burying the |
| 109 | author's actual response to review. Single-revision `diff` does not have this | 109 | author's actual response to review. |
| 110 | problem — it three-dots through `resolve_base_tree` — so only the interdiff path | 110 | |
| 111 | needs fixing. | 111 | Single-revision `diff` does not have *that* problem — it three-dots through |
| 112 | `resolve_base_tree` — but an earlier draft of this spec claimed it was therefore | ||
| 113 | fine, and that was wrong. `resolve_base_tree` diffs against | ||
| 114 | `merge_base(base_tip, head)`, so once the patch is merged by fast-forward the | ||
| 115 | merge-base *is* the head and the diff renders empty. Every merged patch's | ||
| 116 | historical diff is unreadable, which is when a reviewer is most likely to want | ||
| 117 | it. Tracked as `57575b50`; it is a separate defect from the interdiff, not a | ||
| 118 | consequence of it. | ||
| 112 | 119 | ||
| 113 | With `base` on each revision, there are two cases. | 120 | With `base` on each revision, there are two cases. |
| 114 | 121 | ||