Merged-PR sha renders as unclickable text; merge commit structurally absent from the PR commits tab #595

Closed
opened 2026-09-15 21:08:08 +00:00 by crueber · 1 comment
Owner

Investigation (reproduced on origin/main c2555fc, scratch stack :18099)

A merge with strategy=merge was run on a scratch repo whose head mimics the reported shape (branch containing main history + an extra merge + extra commits). Results:

  • The merge commit lands correctly: base ref advances to it, and GET …/api/commits?ref=main lists it at the tip with 2 parents. No backend defect on the publish/list path.
  • The PR commits tab (GET …/pulls/{n}/commits) is LogRange(base.SHA, head.SHA) — the merge commit is a child of base, so it can never appear there. This is documented design (docs/features/03_pull_requests.md:349: /:o/:r/pull/{num}/commits = commits of base…head), matching GitHub semantics. Not a bug.
  • The confirmed gap: the merge SHA is rendered as unclickable plain text in both places that show it — MergeBox.jsx:205 (merged as {sha.slice(0,12)} by …) and the timeline merged event (pullEventText, pull-state.js:83). After merging, the user is shown a SHA with no path to reach it, so they go hunting in the commits list — where it structurally cannot be (PR tab).

What's requested

Link the merge SHA to the commit page (/:o/:r/commit/<sha>, route exists) at the MergeBox render site, so the commit is one click away post-merge. Out of scope (deliberately not changed): PR commits tab stays base…head per the documented contract; timeline system rows stay text-only (textFor contract shared across surfaces).

Open question for the reporter

If the list checked was the repo main commits (not the PR tab) and the sha is still missing there, that path reproduces fine here — please confirm the PR's base ref and hard-refresh (the repo-shell summary entry is SWR-shared and can lag a fresh merge by its revalidation window).

Acceptance criteria

  • MergeBox merged line renders the short SHA as a link to the commit page (full SHA in href, 12-char text unchanged).
  • Reasons line, tooltip, gate, buttons unchanged.
  • Unit test pins the href shape + unchanged text.
  • Full suite green.
## Investigation (reproduced on origin/main c2555fc, scratch stack :18099) A merge with strategy=merge was run on a scratch repo whose head mimics the reported shape (branch containing main history + an extra merge + extra commits). Results: - The merge commit lands correctly: base ref advances to it, and `GET …/api/commits?ref=main` lists it at the tip with 2 parents. No backend defect on the publish/list path. - The PR commits tab (`GET …/pulls/{n}/commits`) is `LogRange(base.SHA, head.SHA)` — the merge commit is a *child* of base, so it can never appear there. This is documented design (docs/features/03_pull_requests.md:349: `/:o/:r/pull/{num}/commits` = commits of `base…head`), matching GitHub semantics. Not a bug. - The confirmed gap: the merge SHA is rendered as **unclickable plain text** in both places that show it — `MergeBox.jsx:205` (`merged as {sha.slice(0,12)} by …`) and the timeline merged event (`pullEventText`, pull-state.js:83). After merging, the user is shown a SHA with no path to reach it, so they go hunting in the commits list — where it structurally cannot be (PR tab). ## What's requested Link the merge SHA to the commit page (`/:o/:r/commit/<sha>`, route exists) at the MergeBox render site, so the commit is one click away post-merge. Out of scope (deliberately not changed): PR commits tab stays base…head per the documented contract; timeline system rows stay text-only (textFor contract shared across surfaces). ## Open question for the reporter If the list checked was the *repo* main commits (not the PR tab) and the sha is still missing there, that path reproduces fine here — please confirm the PR's base ref and hard-refresh (the repo-shell summary entry is SWR-shared and can lag a fresh merge by its revalidation window). ## Acceptance criteria - [ ] MergeBox merged line renders the short SHA as a link to the commit page (full SHA in href, 12-char text unchanged). - [ ] Reasons line, tooltip, gate, buttons unchanged. - [ ] Unit test pins the href shape + unchanged text. - [ ] Full suite green.
crueber added this to the v1 milestone 2026-09-15 21:08:08 +00:00
Author
Owner

Fixed by #596 (merged): MergeBox merged SHA now links to the commit page (full SHA href, 12-char text, shared .link rule); single consumer verified, reasons/gate/buttons untouched. PR commits tab stays base…head per the documented contract. Verified: new test 4/4 (3 fail pre-fix), 1490 unit green (smoke excluded, pre-existing), vite/esbuild green, independent review APPROVE.

Fixed by #596 (merged): MergeBox merged SHA now links to the commit page (full SHA href, 12-char text, shared .link rule); single consumer verified, reasons/gate/buttons untouched. PR commits tab stays base…head per the documented contract. Verified: new test 4/4 (3 fail pre-fix), 1490 unit green (smoke excluded, pre-existing), vite/esbuild green, independent review APPROVE.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
crueber/walhub#595
No description provided.