If you run a build on a slave, then delete the slave node and revisit the build page, it will claim to have been built on master even though build.xml says otherwise in <builtOn>. The reason is that node.jelly takes a Node rather than a String.
A corner case for dumb slaves, but quite common when using a cloud plugin, and rather confusing.
Code changed in jenkins
User: Jesse Glick
Path:
changelog.html
core/src/main/resources/hudson/model/AbstractBuild/index.jelly
core/src/main/resources/hudson/model/Job/buildTimeTrend.jelly
core/src/main/resources/lib/hudson/node.jelly
http://jenkins-ci.org/commit/jenkins/53f21774888e4354c367120eec56c20271184bff
Log:
[FIXED JENKINS-15042] “Took…on master” shown for a build which ran on a slave which was since deleted.