The end of Source Code seems somewhat open to interpretation, but there’s enough evidence to show that Colter ends up in an alternate reality and does not change events in our reality.
Dr. Rutledge explains that when Colter goes to the train, it isn’t time travel. It’s “time reassignment.” Colter doesn’t go back in time every time he enters source code—he experiences what happened on the train by reliving memories of Sean, one of the passengers on the train.
Why Colter’s “time reassignment” isn’t just a simulation
A few things in the movie point to larger worlds outside the source code.
1. Calls and emails still get out into the world outside the train, even if they’re going to different versions of people (not the people in our reality)
2. If source code were only a simulation based on Sean’s memories, Colter wouldn’t be able to take action that goes beyond what Sean experienced (like when Colter gets off the train because he thinks the suspect got off the train).
3. Dr. Rutledge and Goodwin keep saying everything beyond the mission is irrelevant, so they wouldn’t have spent extra time programming small, irrelevant details into source code. For example, it shouldn’t matter what the college student is studying, but we know he is preparing for a psych exam. There is no reason to program jokes for the comedian, but he has a few ready to go when he’s asked to entertain the passengers.
If source code isn’t simply a simulation program and we take the end of the movie into consideration, then source code is a system for creating alternate realities.