Hi Brian,
I developed the current SCORM solution in the framework, the extension called Spoor. Apologies for the lack of documentation available for the extension, but a brief overview:
We use the Pipworks javascript SCORM-wrapper library in the background, and have an internal bridge between the spoor extension and the wrapper simply called scormWrapper.js, which provides a more convenient (for our purposes) API to communicate with SCORM than Pipworks does.
At an abstract level, Spoor saves the completion status of the course's blocks, and whether an assessment has been passed to cmi.suspend_data, and, in conjunction with the assessment extension, saves the user's quiz result to cmi.core.score.raw (also populating cmi.core.score.min and max).
The completion of the module is reported to cmi.core.lesson_status.
What criteria the module requires for completion (i.e. all interactions done and/or quiz passed), and how the lesson_status is reported (passed, failed, completed, incomplete), is all configurable by the author of the course using the config.json file.
If you need more in-depth information about how it does these things, or anything else, I'd be happy to provide it.