John, Heather and Larry have got it right. In MS Project as well as other scheduling tools, “Actual” dates will always override any logic-driven dates – if an FS successor is able to start (and even finish) before the predecessor finishes, then the FS logic is clearly incorrect. (While such out-of-sequence progress is common in real projects, I believe it is particularly prevalent in MSP schedules.) Any “feature” to prevent this would likely lead to an unacceptable user experience.
MSP’s most obvious response to out-of-sequence progress depends on the “split-in-progress tasks” checkbox in the Schedule Options. Checking the box enforces the predecessor relationships on the un-completed parts of out-of-sequence tasks; i.e. MSP suspends the in-progress work until the predecessors are finished. If the box is unchecked, then MSP ignores the predecessor relationships and allows the task to proceed without disruption until it is complete.