When a course is registered into the LMS, the course definition file created from publishing will define a "mastery score" which is a passing score the user must earn in the course. Many authoring engines will default the mastery score to 80%, meaning the user has to score above 80% to pass the course. Normally you define the master score when publishing courses, but you are LSO able to edit the mastery score in the course module record, which means you can set the passing score to some other value to suite your needs.
On course launch, most authoring engines will GET the mastery score from the LMS and use that as the basis of determining a Complete or Pass status. Some engines will ignore the mastery score entirely and define Complete or Pass internally and when the course is registered in the LMS not define a mastery score. I have seen some scenarios where a user builds say 10 course with an 80% passing score, but the 11th course has no passing score, but publishing the course picks up the default 80%. In other words, Mastery Score is something you should pay attention to when adding courses.
It is a design decision of the course developer to have the course post to the LMS a pass or complete status. Pass is pretty clear in meaning, but non-technical users of course authoring engines (and in some case the authoring engine developer), conflate the meaning of complete to also mean pass. In publishing a course with a quiz, instead of posting a pass status, the course would post a complete status which creates reporting problems. Consider completing a course but failing a quiz. Because the course says you have completed the course, should the LMS mark the user as Finished or should the LMS mark the user as inProgress because you have not passed the quiz. Most course developers mean to complete the course you have to pass the quiz, and while that should be encoded into the course, many course developers do not realize there is an important distinction and have produced massive libraries of lessons that would need to be republished once their mistake is realized. This happens so much, we have made the business decision for AbilityLMS to not make a distinction in Complete or Pass if a mastery score is registered. If AbilityLMS sees a score posted by the course greater than the mastery score registered in the LMS for the course and a status of complete or passed also posted by the course, the history record is marked as finished.
If for some reason you want to allow a for a user to complete a course, pass or fail a quiz, simply make sure the course module record has a zero mastery score, which should be the default value anyways when the course is imported.
When a course communicate to the LMS, it posts the data to a module history record. This is not the same thing as the user's training history record which is what the user sees. The user does not see the module history record. An admin might see a the module history record if it is enabled (and available) when looking at the history record as one of the tabs above the history record. When the module history record gets data, it rolls up to the history record score until such point in time as the user is considered finished.
Module status data flows into a field called completion status. Completion status is not the same thing as the history status (Enrolled, In-Progress, Finished...) as history status is hard coded to support only certain values used system wide. Completion status on the other hand is designed to accommodate user defined statuses such as "requirement met" in addition to the e-learning statuses of complete, incomplete, passed and failed.
This flexibility can lend itself to some unexpected results such as reporting that lists the user as Finished and Failed, perhaps because someone on the back-end directly edited the record or the user. Perhaps because some user who previously completed the course, re-launched into the course and tried to take the quiz again and did not pass the quiz.
For human editing, check the History Audit tab. For courseware to LMS communication check the Log tab and scroll to the bottom to see the most recent course to LMS communication. Pay attention to what mastery score was returned at the time of the course launch as someone may have edited the course module record. Also study the different status codes and scores posted by the content. All of our logging occurs before the LMS ever processes what the course posts so you can almost always qualify what the course is (or is not) posting to the LMS.