JENKINS-23365 made it possible to use SCM from other contexts. But there are still some SCM-oriented things stuck in AbstractProject/AbstractBuild which ought to be generalized.
- AbstractBuild.getChangeSets (as used by project-changes.jelly) does not implement any method. Either this should be pushed up into Run so that it can be used more generally (simple though an awkward introduction of SCM specifics into Run); or SCMTriggerItem should add getChangeSets(Run) (more sensible architecturally, though awkward since it could not have a generic type for the build).
- getCulprits and hasParticipant would seem to apply to any build with changes.
- AbstractProject.doRssChangelog could be moved elsewhere and use getChangeSets.
- View.AsynchPeople could use getChangeSets.
Possibly there needs to be an interface for a Run with changes, tied somehow to SCMTriggerItem and with some default methods?