staff graded xblock is pretty simple and might be a nice point of comparison? This document may also be a useful reference.
From looking at your code I suspect you might be missing max_score()
like this. If you don’t implement it, it defaults to None which may be the issue.