expandPullRequest ran two queries per row, so a page of 20 pull requests cost 40; expandPullRequests reads every side and author at once, the way issues are expanded. The pull request detail now carries viewerCanEdit, as an issue does, and the web reads it instead of recomputing it from the session and role in two places.